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

รีเซ็ต Primary Key Auto Increment ใน MySQL ด้วย TRUNCATE และ ALTER TABLE

วิธีมาตรฐานในการรีเซ็ต AUTO_INCREMENT เริ่มจาก 1 ใหม่ คือ TRUNCATE TABLE ตามด้วย ALTER TABLE ... AUTO_INCREMENT = 1

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

สร้างตารางมี Primary Key Auto Increment:

mysql> create table DemoTable1929 (
    -> UserId int NOT NULL AUTO_INCREMENT,
    -> PRIMARY KEY(UserId)
    -> );

เพิ่มข้อมูล 3 แถว:

mysql> insert into DemoTable1929 values(),(),();
+--------+
| UserId |
+--------+
|      1 |
|      2 |
|      3 |
+--------+
3 rows in set (0.00 sec)

คำสั่งรีเซ็ต Primary Key

mysql> truncate table DemoTable1929;
Query OK, 0 rows affected (0.00 sec)

mysql> alter table DemoTable1929 auto_increment=1;
Query OK, 0 rows affected (0.00 sec)
Records: 0  Duplicates: 0  Warnings: 0

เพิ่มข้อมูลใหม่ (เริ่มจาก 1 ใหม่):

mysql> insert into DemoTable1929 values(),();
+--------+
| UserId |
+--------+
|      1 |
|      2 |
+--------+
2 rows in set (0.00 sec)

คำอธิบายและตัวเลือกอื่น

  • TRUNCATE TABLE: ลบข้อมูลทั้งหมด และรีเซ็ต AUTO_INCREMENT อัตโนมัติ (ใน InnoDB/MyISAM)
  • ALTER TABLE ... AUTO_INCREMENT = N: ตั้งค่าเริ่มต้นใหม่ (N=1 หรือค่าอื่น)
  • ไม่ต้อง TRUNCATE ถ้าอยากเก็บข้อมูล: ใช้ ALTER TABLE tbl AUTO_INCREMENT = 1 แต่ค่าถัดไปจะเป็น MAX(id)+1 ไม่ใช่ 1 เสมอไป
  • DELETE FROM tbl ไม่รีเซ็ต AUTO_INCREMENT (ค่าถัดไปต่อจากเดิม)

ข้อควรระวัง: TRUNCATE ไม่สามารถ Rollback ได้ และจะทำให้ Foreign Key constraints ล้มเหลวถ้ามีตารางอ้างอิง