Você pode inserir em uma coluna de incremento automático e especificar um valor. Isto é bom; simplesmente substitui o gerador de incremento automático.
Se você tentar inserir um valor NULL ou 0 ou DEFAULT
, ou se omitir a coluna de incremento automático das colunas na sua instrução INSERT, isso ativará o gerador de incremento automático.
Então, tudo bem INSERT INTO table1 SELECT * FROM table2
(a propósito, você não precisa dos parênteses). Isto significa que os valores de ID em table2
serão copiados na íntegra, e table1
irá não geram novos valores.
Se você deseja table1
gerar novos valores, não pode fazer SELECT *
. Você usa nulo ou 0 para a coluna do ID:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
Ou então, você omite a coluna da lista de colunas da instrução INSERT e da lista de seleção da instrução SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Antes de você perguntar, não há sintaxe no SQL para "selecione *, exceto uma coluna". Você precisa especificar a lista completa dos nomes das colunas que deseja inserir.