AUTO_INCREMENT เป็นคุณสมบัติของคอลัมน์ใน MySQL ที่ใช้กับคอลัมน์ประเภทตัวเลข (INT) โดยระบบจะเพิ่มค่าตัวเลขอัตโนมัติทีละ 1 (หรือมากกว่านั้นถ้ากำหนดเอง) ทุกครั้งที่มีการแทรกแถวใหม่ (INSERT) โดยไม่ต้องป้อนค่าเอง เหมาะอย่างยิ่งสำหรับการสร้างรหัสอัตโนมัติ, เลขลำดับ, หรือใช้เป็น Primary Key ของแต่ละแถวในตาราง เช่น user_id, order_id, product_id เป็นต้น
รูปแบบการใช้งาน
column_name INT AUTO_INCREMENT PRIMARY KEY
ตัวอย่างการใช้งาน
สร้างตารางที่มี AUTO_INCREMENT
SQL
CREATE TABLE customers (
customer_id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(100),
email VARCHAR(100)
);customer_idจะเริ่มจาก 1 และเพิ่มขึ้นทีละ 1 โดยอัตโนมัติเมื่อเพิ่มลูกค้าใหม่
เพิ่มข้อมูลโดยไม่ต้องระบุ customer_id
SQL
INSERT INTO customers (name, email)
VALUES ('Somchai', '[email protected]');- ระบบจะกำหนด
customer_idให้โดยอัตโนมัติ (เช่น 1, 2, 3…)
ดูค่า AUTO_INCREMENT ล่าสุดที่แทรกไป
SQL
SELECT LAST_INSERT_ID();- แสดงหมายเลข
AUTO_INCREMENTล่าสุดที่ถูกสร้างใน session นี้
ตั้งค่าเริ่มต้นของ AUTO_INCREMENT
SQL
ALTER TABLE customers AUTO_INCREMENT = 1000;- ทำให้แถวถัดไปเริ่มจาก 1000 แทน 1
เงื่อนไขการใช้งาน
- ใช้ได้กับคอลัมน์ที่เป็นชนิดตัวเลขเท่านั้น เช่น
INT,BIGINT,SMALLINT - ต้องใช้ร่วมกับ
PRIMARY KEYหรือUNIQUE - มีได้เพียง 1 คอลัมน์เท่านั้นที่เป็น
AUTO_INCREMENTต่อ 1 ตาราง - ไม่สามารถใช้กับ
NULL,DEFAULTหรือชนิดข้อมูลอื่นที่ไม่ใช่ตัวเลข
หมายเหตุ:
- หากระบุค่า
AUTO_INCREMENTเองตอนINSERTระบบจะรับค่านั้น ถ้าไม่ซ้ำ - หากลบข้อมูลบางแถว ตัวเลข
AUTO_INCREMENTจะไม่ย้อนกลับ - ค่าจะยังคงเพิ่มต่อเนื่องแม้จะลบแถวก่อนหน้าแล้ว