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

สามารถ INSERT ข้อมูลในตาราง MySQL ที่มี AUTO_INCREMENT โดยไม่ระบุค่าได้หรือไม่?

คำตอบ: ได้เลยครับ

เมื่อคอลัมน์ถูกกำหนดเป็น AUTO_INCREMENT MySQL จะสร้างค่า ID ใหม่ให้อัตโนมัติเมื่อ INSERT โดยไม่ต้อง (และไม่ควร) ระบุค่าสำหรับคอลัมน์นั้น

สร้างตารางพร้อม AUTO_INCREMENT

mysql> CREATE TABLE DemoTable1479 (
    -> EmployeeId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> EmployeeSalary INT
    -> );
Query OK, 0 rows affected (0.86 sec)

INSERT โดยระบุเฉพาะคอลัมน์ที่ไม่ใช่ AUTO_INCREMENT

mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(6800);
Query OK, 1 row affected (0.10 sec)

mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(5600);
Query OK, 1 row affected (0.11 sec)

mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(5700);
Query OK, 1 row affected (0.16 sec)

mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(6900);
Query OK, 1 row affected (0.14 sec)

mysql> INSERT INTO DemoTable1479(EmployeeSalary) VALUES(15000);
Query OK, 1 row affected (0.11 sec)

ผลลัพธ์ - MySQL กำหนด EmployeeId ให้อัตโนมัติ

+------------+----------------+
| EmployeeId | EmployeeSalary |
+------------+----------------+
|          1 |           6800 |
|          2 |           5600 |
|          3 |           5700 |
|          4 |           6900 |
|          5 |          15000 |
+------------+----------------+
5 rows in set (0.00 sec)

จุดสำคัญ

  • ระบุชื่อคอลัมน์ในคำสั่ง INSERT: INSERT INTO table(col1, col2) VALUES(val1, val2)
  • เว้นคอลัมน์ AUTO_INCREMENT ไว้ (MySQL จะเติมเอง)
  • หาก INSERT โดยไม่ระบุชื่อคอลัมน์ ต้องใช้ NULL หรือ 0 หรือ DEFAULT สำหรับคอลัมน์ AUTO_INCREMENT
  • ค่า AUTO_INCREMENT จะเพิ่มขึ้นทีละ 1 ตามลำดับ (เริ่มต้นที่ 1)

วิธี INSERT แบบไม่ระบุชื่อคอลัมน์ (ต้องส่งค่า placeholder)

INSERT INTO DemoTable1479 VALUES(DEFAULT, 6800);
-- หรือ
INSERT INTO DemoTable1479 VALUES(NULL, 6800);
-- หรือ
INSERT INTO DemoTable1479 VALUES(0, 6800);