Anda bisa memasukkan ke dalam kolom kenaikan otomatis dan menentukan nilai. Ini baik; itu hanya menimpa generator kenaikan-otomatis.
Jika Anda mencoba untuk memasukkan nilai NULL atau 0 atau DEFAULT
, atau jika Anda menghilangkan kolom kenaikan otomatis dari kolom dalam pernyataan INSERT Anda, ini akan mengaktifkan generator kenaikan otomatis.
Jadi, tidak masalah untuk INSERT INTO table1 SELECT * FROM table2
(omong-omong, Anda tidak membutuhkan tanda kurung). Ini berarti bahwa nilai id di table2
akan disalin kata demi kata, dan tidaktable1
akan menghasilkan nilai baru.
Jika Anda ingin table1
menghasilkan nilai baru, Anda tidak bisa melakukannya SELECT *
. Anda menggunakan nol atau 0 untuk kolom id:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
Atau Anda menghilangkan kolom dari daftar kolom pernyataan INSERT dan daftar pilihan pernyataan SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Sebelum Anda bertanya, tidak ada sintaks dalam SQL untuk "pilih * kecuali untuk satu kolom". Anda harus mengeja daftar lengkap nama kolom yang ingin Anda masukkan.