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

การทำงานกับคอลัมน์ AUTO_INCREMENT ใน MySQL

บทนำ

คอลัมน์ AUTO_INCREMENT จะสร้างค่า ID อัตโนมัติทุกครั้งที่เพิ่มแถวใหม่ โดยทั่วไปใช้กับ Primary Key

ตัวอย่างการสร้างตารางพร้อม AUTO_INCREMENT

mysql> CREATE TABLE DemoTable (
    -> Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    -> FirstName VARCHAR(20),
    -> LastName VARCHAR(20)
    -> );
Query OK, 0 rows affected (0.71 sec)

เพิ่มข้อมูล (ไม่ต้องระบุ Id)

mysql> INSERT INTO DemoTable(FirstName, LastName) VALUES('John', 'Smith');
mysql> INSERT INTO DemoTable(FirstName, LastName) VALUES('Chris', 'Brown');
mysql> INSERT INTO DemoTable(FirstName, LastName) VALUES('Carol', 'Taylor');

แสดงข้อมูล

mysql> SELECT * FROM DemoTable;

ผลลัพธ์

+----+-----------+----------+
| Id | FirstName | LastName |
+----+-----------+----------+
| 1  | John      | Smith    |
| 2  | Chris     | Brown    |
| 3  | Carol     | Taylor   |
+----+-----------+----------+
3 rows in set (0.00 sec)

คุณสมบัติสำคัญของ AUTO_INCREMENT

  • เริ่มต้นที่ 1 และเพิ่มทีละ 1
  • สามารถตั้งค่าเริ่มต้นได้ด้วย AUTO_INCREMENT = n ขณะ CREATE TABLE
  • สามารถเปลี่ยนค่าได้ด้วย ALTER TABLE ... AUTO_INCREMENT = n
  • ค่าที่ถูกลบ (DELETE) จะไม่ถูกนำกลับมาใช้ใหม่ (Gap)
  • ต้องเป็น INDEX (มักเป็น PRIMARY KEY หรือ UNIQUE KEY)

คำสั่งที่เกี่ยวข้อง

-- ดูค่า AUTO_INCREMENT ปัจจุบัน
SHOW TABLE STATUS LIKE 'DemoTable'\G

-- รีเซ็ต AUTO_INCREMENT (ต้องระวัง: อาจทำให้ ID ซ้ำได้)
ALTER TABLE DemoTable AUTO_INCREMENT = 1;

-- ดูค่า ID ที่เพิ่ง INSERT (Last Insert ID)
SELECT LAST_INSERT_ID();