Możesz wstawić do kolumny automatycznego przyrostu i podać wartość. Jest okej; po prostu zastępuje generator auto-przyrostowy.
Próba wprowadzenia wartości NULL lub 0 lub DEFAULT
pominięcie kolumny automatycznego przyrostu w kolumnach instrukcji INSERT powoduje uaktywnienie generatora automatycznego przyrostu.
Więc dobrze jest INSERT INTO table1 SELECT * FROM table2
(nawiasem mówiąc, nie potrzebujesz nawiasów). Oznacza to, że wartości id table2
zostaną skopiowane dosłownie i nietable1
będą generować nowych wartości.
Jeśli chcesz table1
wygenerować nowe wartości, nie możesz tego zrobić SELECT *
. Możesz użyć null lub 0 dla kolumny id:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
Albo pominiesz kolumnę z listy kolumn instrukcji INSERT i listy wyboru instrukcji SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Zanim zapytasz, w SQL nie ma składni dla „select * oprócz jednej kolumny”. Musisz przeliterować pełną listę nazw kolumn, które chcesz wstawić.