Puede insertar en una columna de incremento automático y especificar un valor. Esto esta bien; simplemente anula el generador de incremento automático.
Si intenta insertar un valor de NULL o 0 o DEFAULT
, o si omite la columna de incremento automático de las columnas en su instrucción INSERT, esto activa el generador de incremento automático.
Entonces, está bien INSERT INTO table1 SELECT * FROM table2
(por cierto, no necesitas los paréntesis). Esto significa que los valores de ID en table2
serán copiados textualmente, y table1
serán no generar nuevos valores.
Si desea table1
generar nuevos valores, no puede hacerlo SELECT *
. O usa nulo o 0 para la columna de identificación:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
O bien, omite la columna de la lista de columnas de la instrucción INSERT y de la lista de selección de la instrucción SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Antes de preguntar, no hay sintaxis en SQL para "select * excepto para una columna". Debe deletrear la lista completa de nombres de columnas que desea insertar.