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

MySQL: รีเซ็ต AUTO_INCREMENT ให้เริ่มที่ 1 ด้วย TRUNCATE TABLE


คำอธิบาย

ใช้ TRUNCATE TABLE เพื่อลบข้อมูลทั้งหมดและรีเซ็ต AUTO_INCREMENT ให้เริ่มที่ 1 ใหม่

ขั้นตอนการสร้างตารางและข้อมูลตัวอย่าง

mysql> create table DemoTable ( 
    StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY ); 
Query OK, 0 rows affected (1.44 sec)

การเพิ่มข้อมูล 4 แถว

mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.35 sec)
mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.30 sec)
mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.06 sec)

แสดงข้อมูล (Auto Increment = 1,2,3,4)

mysql> select * from DemoTable;

ผลลัพธ์:

+-----------+
| StudentId |
+-----------+
| 1         |
| 2         |
| 3         |
| 4         |
+-----------+
4 rows in set (0.00 sec)

TRUNCATE TABLE รีเซ็ต AUTO_INCREMENT

mysql> truncate table DemoTable; 
Query OK, 0 rows affected (0.93 sec)
mysql> select * from DemoTable; 
Empty set (0.00 sec)

Insert ใหม่หลัง Truncate

mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.09 sec)
mysql> insert into DemoTable values(); 
Query OK, 1 row affected (0.07 sec)

แสดงข้อมูล (Auto Increment เริ่มที่ 1 ใหม่)

mysql> select * from DemoTable;

ผลลัพธ์:

+-----------+
| StudentId |
+-----------+
| 1         |
| 2         |
| 3         |
+-----------+
3 rows in set (0.00 sec)

TRUNCATE vs DELETE

วิธีอื่น: ALTER TABLE

ALTER TABLE DemoTable AUTO_INCREMENT = 1;

ไม่ลบข้อมูล แค่ตั้งค่า Next Auto Increment Value

คุณสมบัติTRUNCATEDELETE
รีเซ็ต Auto Incrementใช่ไม่ (ต้อง ALTER TABLE)
ความเร็วเร็วมาก (Drop + Recreate)ช้ากว่า (Row by row)
Triggerไม่ยิงยิง ON DELETE
Rollbackไม่ได้ (Implicit Commit)ได้ (ใน Transaction)
WHERE clauseไม่ได้ได้