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

MySQL: ความหมายของ AUTO_INCREMENT=3 ใน Schema Definition

ความหมายของ AUTO_INCREMENT = N ในการสร้างตาราง

คำสั่ง CREATE TABLE ... AUTO_INCREMENT = 3 กำหนดค่าเริ่มต้นของ Auto Increment Column (มักเป็น Primary Key) ให้เริ่มที่ 3 แทนค่า Default 1

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

สร้างตารางตั้งค่า Auto Increment เริ่มที่ 3:

mysql> CREATE TABLE Auto_incrementDemo (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> Name VARCHAR(20)
    -> ) AUTO_INCREMENT = 3;
Query OK, 0 rows affected (0.52 sec)

เพิ่มข้อมูล 3 แถว (ไม่ระบุ Id):

mysql> INSERT INTO Auto_incrementDemo(Name) VALUES('John'),('Larry'),('Bob');
Query OK, 3 rows affected (0.12 sec)

ผลลัพธ์ (Id เริ่มที่ 3):

mysql> SELECT * FROM Auto_incrementDemo;
+----+-------+
| Id | Name  |
+----+-------+
| 3  | John  |
| 4  | Larry |
| 5  | Bob   |
+----+-------+
3 rows in set (0.00 sec)

คำอธิบาย

  • แถวแรกได้ Id = 3 (ค่าที่ตั้งไว้)
  • แถวถัดไปเพิ่มทีละ 1 ตามปกติ (4, 5, ...)
  • ไม่กระทบค่าที่ INSERT ระบุ Id เอง (Explicit Insert)

กรณีใช้งานจริง

  • Migration/Merge: รวมข้อมูลจากหลาย Database ไม่ให้ ID ชนกัน (ตั้ง Offset ต่างกัน)
  • Testing: ทดสอบ Logic ที่คาดการณ์ ID เริ่มต้น
  • Reserved IDs: สงวน ID 1-2 ไว้สำหรับ System Records

การเปลี่ยนค่า Auto Increment ภายหลัง

-- ดูค่าปัจจุบัน
SHOW TABLE STATUS LIKE 'Auto_incrementDemo'\G
-- Auto_increment: 6

-- เปลี่ยนค่าเริ่มต้นใหม่
ALTER TABLE Auto_incrementDemo AUTO_INCREMENT = 100;

-- หรือ Reset (MyISAM/InnoDB แตกต่างกัน)
-- InnoDB: ต้องไม่มีแถวที่มี ID >= ค่าใหม่
TRUNCATE TABLE Auto_incrementDemo;  -- รีเซ็ตเป็น 1 (หรือค่า AUTO_INCREMENT ของตาราง)

ข้อควรระวัง

  • AUTO_INCREMENT ต้องเป็น PRIMARY KEY หรือ UNIQUE INDEX เท่านั้น
  • InnoDB: ไม่สามารถตั้งค่าต่ำกว่า Max(Id) ปัจจุบันได้ (Error)
  • ค่าสูงสุดขึ้นกับชนิดข้อมูล: INT UNSIGNED = 4,294,967,295