คุณสามารถแทรกลงในคอลัมน์เพิ่มอัตโนมัติและระบุค่า นี่เป็นเรื่องปกติ มันเพียงแทนที่ตัวสร้างการเพิ่มอัตโนมัติ
ถ้าคุณพยายามแทรกค่า NULL หรือ 0 หรือDEFAULT
หรือถ้าคุณไม่ใส่คอลัมน์เพิ่มอัตโนมัติจากคอลัมน์ในคำสั่ง INSERT ของคุณสิ่งนี้จะเปิดใช้งานตัวสร้างการเพิ่มอัตโนมัติ
ดังนั้นจึงเป็นเรื่องที่ดีINSERT INTO table1 SELECT * FROM table2
(โดยคุณไม่จำเป็นต้องใช้วงเล็บ) ซึ่งหมายความว่าค่า id ในtable2
จะถูกคัดลอกเป็นคำต่อคำและtable1
จะไม่สร้างค่าใหม่
หากคุณต้องการ ที่จะสร้างค่านิยมใหม่ที่คุณไม่สามารถทำได้table1
SELECT *
ไม่ว่าคุณจะใช้ null หรือ 0 สำหรับคอลัมน์ id:
INSERT INTO table1 SELECT 0, col1, col2, col3, ... FROM table2;
หรือมิฉะนั้นคุณจะละเว้นคอลัมน์จากรายการคอลัมน์ของคำสั่ง INSERT และรายการเลือกคำสั่ง SELECT
-- No id in either case:
INSERT INTO table1 (col1, col2, col3) SELECT col1, col2, col3, ... FROM table2;
ก่อนที่คุณจะถามไม่มีไวยากรณ์ใน SQL สำหรับ "select * ยกเว้นหนึ่งคอลัมน์" คุณต้องสะกดรายชื่อคอลัมน์ทั้งหมดที่คุณต้องการแทรก