Bạn có thể chèn vào cột tăng tự động và chỉ định giá trị. Điều này là tốt; nó chỉ đơn giản ghi đè trình tạo tăng tự động.
Nếu bạn cố gắng chèn giá trị NULL hoặc 0 hoặc DEFAULT
nếu bạn bỏ qua cột tăng tự động khỏi các cột trong câu lệnh INSERT, điều này sẽ kích hoạt trình tạo tăng tự động.
Vì vậy, thật tốt INSERT INTO table1 SELECT * FROM table2
(nhân tiện, bạn không cần dấu ngoặc đơn). Điều này có nghĩa là các giá trị id trong table2
sẽ được sao chép nguyên văn và table1
sẽ không tạo ra các giá trị mới.
Nếu bạn muốn table1
tạo ra các giá trị mới, bạn không thể làm được SELECT *
. Bạn sử dụng null hoặc 0 cho cột id:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
Hoặc nếu không, bạn bỏ qua cột từ cả danh sách cột của câu lệnh INSERT và danh sách chọn của câu lệnh SELECT:
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
Trước khi bạn hỏi, không có cú pháp nào trong SQL cho "select * ngoại trừ một cột". Bạn phải đánh vần danh sách đầy đủ các tên cột bạn muốn chèn.