Vous pouvez insérer dans une colonne à incrémentation automatique et spécifier une valeur. C'est bon; il remplace simplement le générateur d'incrémentation automatique.
Si vous essayez d'insérer une valeur NULL ou 0 ou DEFAULT
, ou si vous omettez la colonne d'incrémentation automatique des colonnes de votre instruction INSERT, cela active le générateur d'incrémentation automatique.
Donc, ça va INSERT INTO table1 SELECT * FROM table2
(au fait, vous n'avez pas besoin des parenthèses). Cela signifie que les valeurs id dans table2
recopie tel quel, et table1
ne pas générer de nouvelles valeurs.
Si vous souhaitez table1
générer de nouvelles valeurs, vous ne pouvez pas le faire SELECT *
. Soit vous utilisez null ou 0 pour la colonne id:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
Sinon, vous omettez la colonne de la liste des colonnes de l'instruction INSERT et de la liste de sélection de l'instruction SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Avant de demander, il n'y a pas de syntaxe en SQL pour "sélectionner * sauf pour une colonne". Vous devez préciser la liste complète des noms de colonnes que vous souhaitez insérer.