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.