INSERT [LOW_PRIORITY] [IGNORE] [INTO] nome_tabela [(column list)] SELECT ...
Com a instrução INSERT ... SELECT você
pode inserir muitas linhas rapidamente em uma tabela a partir
de outras tabelas
INSERT INTO tblTemp2 (fldID) SELECT tblTemp1.fldOrder_ID FROM tblTemp1 WHERE tblTemp1.fldOrder_ID > 100;
As seguintes condições servem para uma instrução
INSERT ... SELECT:
Antes do MySQL 4.0.1, INSERT ... SELECT
operava implicitamente em modo IGNORE.
A partir do MySQL 4.0.1, você deve especificar
IGNORE explicitamente para ignorar
registros que causaria violação de chave duplicada.
Antes do MySQL 4.0.14, a tabela alvo da instrução
INSERT não pode aparecer na cláusula
FROM da parte SELECT
da consulta. Esta limitação é deixada na versão
4.0.14.
Colunas AUTO_INCREMENT funcionam da
mesma forma.
Em programas C, Você pode usar a função
mysql_info() da API C para obter
informação sobre a consulta. See
Secção 6.4.3, “Sintaxe INSERT”.
Para assegurar que o log binário possa ser usado para
re-criar a tabela original, MySQL não permitirá
inserções concorrentes em um INSERT ...
SELECT.
Você também pode utilizar REPLACE em vez
de INSERT para sobrescrever linhas antigas.
REPLACE é a contra parte para
INSERT IGNORE no tratamento de novas linhas
contendo valores de chave únicos que duplicam linhas antigas:
As novas linhas são usadas para substituir as linhas antigas
em vez de descartá-las.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.
