Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> MySQL

Insert หลายแถวใน MySQL ด้วยคำสั่งเดียว คั่นด้วยจุลภาค

ใน MySQL สามารถเพิ่มข้อมูลหลายแถวในคำสั่ง INSERT เดียวได้ โดยระบุชุดค่า (Value sets) คั่นด้วยจุลภาค ภายในวงเล็บเดียวกัน

รูปแบบคำสั่ง

INSERT INTO table (col1, col2) VALUES (val1, val2), (val3, val4), (val5, val6);

ตัวอย่างการใช้งาน

สร้างตารางพร้อม AUTO_INCREMENT เริ่มที่ 1000:

mysql> create table if not exists DemoTable1343 (
    _ClientId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ClientName varchar(40),
    ClientProjectDeadline date
) ENGINE=MyISAM, AUTO_INCREMENT=1000;

Insert 4 แถวในคำสั่งเดียว:

mysql> insert into DemoTable1343(ClientName,ClientProjectDeadline)
    -> values('Chris','2019-09-24'),('Bob','2015-12-09'),('Mike','2017-01-20'),('Carol','2018-03-31');

ผลลัพธ์ (Id เริ่มที่ 1000)

+-----------+------------+-----------------------+
| _ClientId | ClientName | ClientProjectDeadline |
+-----------+------------+-----------------------+
| 1000      | Chris      | 2019-09-24            |
| 1001      | Bob        | 2015-12-09            |
| 1002      | Mike       | 2017-01-20            |
| 1003      | Carol      | 2018-03-31            |
+-----------+------------+-----------------------+

ข้อดีและข้อควรระวัง:

  • ประสิทธิภาพ: เร็วกว่า INSERT หลายคำสั่งมาก (Single round-trip, Single transaction)
  • ข้อจำกัด: max_allowed_packet จำกัดขนาดคำสั่ง (Default ~4MB/64MB)
  • Error handling: หากแถวไหน Error ทั้งชุดจะ Rollback (ถ้าใช้ Transactional Engine เช่น InnoDB)
  • INSERT IGNORE หรือ ON DUPLICATE KEY UPDATE ใช้ได้กับรูปแบบนี้เช่นกัน