È possibile inserire in una colonna di incremento automatico e specificare un valore. Questo va bene; sostituisce semplicemente il generatore di incremento automatico.
Se si tenta di inserire un valore NULL o 0 o DEFAULT
, o se si omette la colonna di incremento automatico dalle colonne nell'istruzione INSERT, questo attiva il generatore di incremento automatico.
Quindi, va bene INSERT INTO table1 SELECT * FROM table2
(a proposito, non hai bisogno delle parentesi). Ciò significa che i valori ID in table2
verranno copiati pari pari, e table1
saranno senza generare nuovi valori.
Se vuoi table1
generare nuovi valori, non puoi farlo SELECT *
. O usi null o 0 per la colonna id:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
Altrimenti ometti la colonna dall'elenco delle colonne dell'istruzione INSERT e dall'elenco di selezione dell'istruzione SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Prima di chiedere, non c'è sintassi in SQL per "selezionare * tranne una colonna". Devi precisare l'elenco completo dei nomi delle colonne che desideri inserire.