MySQL AUTO INCREMENT

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 จะไม่ย้อนกลับ
  • ค่าจะยังคงเพิ่มต่อเนื่องแม้จะลบแถวก่อนหน้าแล้ว
แชร์เรื่องนี้