วิธีมาตรฐานในการรีเซ็ต 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 ล้มเหลวถ้ามีตารางอ้างอิง