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

MySQL: TRUNCATE ตารางและรีเซ็ต AUTO_INCREMENT เอง

TRUNCATE และตั้งค่า AUTO_INCREMENT ใหม่

TRUNCATE TABLE ลบข้อมูลทั้งหมดและรีเซ็ต AUTO_INCREMENT กลับเป็น 1 ตามด้วย ALTER TABLE ... AUTO_INCREMENT = n ตั้งค่าเริ่มต้นใหม่

ตัวอย่าง

mysql> create table DemoTable825(Value int NOT NULL AUTO_INCREMENT PRIMARY KEY);
Query OK, 0 rows affected (0.63 sec)
mysql> insert into DemoTable825 values();
mysql> insert into DemoTable825 values();
mysql> insert into DemoTable825 values();

ข้อมูลเดิม: 1, 2, 3

ขั้นตอน

-- 1. ล้างข้อมูลและรีเซ็ต AUTO_INCREMENT เป็น 1
mysql> truncate table DemoTable825;
Query OK, 0 rows affected (0.58 sec)

-- 2. ตั้งค่า AUTO_INCREMENT เริ่มที่ 2000
mysql> alter table DemoTable825 auto_increment = 2000;
Query OK, 0 rows affected (0.16 sec)

-- 3. แทรกใหม่
mysql> insert into DemoTable825 values();
mysql> insert into DemoTable825 values();
mysql> insert into DemoTable825 values();

ผลลัพธ์

+-------+
| Value |
+-------+
| 2000  |
| 2001  |
| 2002  |
+-------+

หมายเหตุ

  • TRUNCATE เร็วกว่า DELETE มาก (Drop & Recreate table)
  • TRUNCATE ไม่ทำให้ Trigger AFTER DELETE ทำงาน
  • ALTER TABLE ... AUTO_INCREMENT = n ต้องมีค่า n > ค่าสูงสุดปัจจุบัน (ถ้ามีข้อมูล)
  • หลัง TRUNCATE ไม่มีข้อมูล จึงตั้งค่าได้เลย

สรุป

ใช้ TRUNCATE TABLE ล้างข้อมูล แล้ว ALTER TABLE ... AUTO_INCREMENT = n ตั้งค่าเริ่มต้นใหม่