MySQL AUTO_INCREMENT คืออะไร?
พื้นฐานของ AUTO_INCREMENT
In MySQL, AUTO_INCREMENT เป็นฟีเจอร์ที่เพิ่มค่าตัวเลขในตารางฐานข้อมูลโดยอัตโนมัติ มักใช้เป็นคีย์หลัก (PRIMARY KEY) ทำให้หมายเลขลำดับถูกกำหนดโดยอัตโนมัติทุกครั้งที่แทรกแถวใหม่—โดยไม่ต้องระบุ ID ด้วยตนเอง.
การใช้งานหลักของ AUTO_INCREMENT
- การสร้าง ID สมาชิกอัตโนมัติ : กำหนด ID ที่ไม่ซ้ำกันเมื่อผู้ใช้ลงทะเบียน
- การจัดการหมายเลขคำสั่งซื้อ : กำหนดหมายเลขให้กับแต่ละคำสั่งซื้อโดยอัตโนมัติ
- การกำหนดรหัสสินค้า : ใช้เป็นตัวระบุที่ไม่ซ้ำกันสำหรับสินค้า
โดยการใช้ AUTO_INCREMENT อย่างเหมาะสม คุณสามารถรักษาความเป็นเอกลักษณ์ของข้อมูลได้พร้อมลดภาระการจัดการ.
วิธีตรวจสอบค่า AUTO_INCREMENT ใน MySQL [3 SQL Commands]
วิธีที่ 1: ใช้ SHOW TABLE STATUS
SHOW TABLE STATUS LIKE 'table_name';
เมื่อคุณรันคำสั่งนี้ ค่า AUTO_INCREMENT ปัจจุบันจะแสดงในคอลัมน์ Auto_increment.
วิธีที่ 2: ดึงจาก INFORMATION_SCHEMA.TABLES
SELECT AUTO_INCREMENT FROM information_schema.tables
WHERE table_schema = 'database_name' AND table_name = 'table_name';
วิธีนี้ทำให้คุณสามารถดึงค่า AUTO_INCREMENT ที่ตั้งไว้สำหรับตารางเป้าหมายได้โดยตรง.
วิธีที่ 3: ใช้ SHOW CREATE TABLE
SHOW CREATE TABLE table_name;
เมื่อคุณรันคำสั่งนี้ DDL (Data Definition Language) ของการสร้างตารางจะแสดงออกมา ซึ่งรวมถึงการตั้งค่า AUTO_INCREMENT.

วิธีตั้งค่าและแก้ไข AUTO_INCREMENT
การตั้งค่า AUTO_INCREMENT เมื่อสร้างตารางใหม่
เพื่อกำหนดคอลัมน์ที่มี AUTO_INCREMENT เมื่อสร้างตารางใหม่ ให้ใช้ SQL ดังต่อไปนี้:
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255)
);
การเปลี่ยนค่า AUTO_INCREMENT ของตารางที่มีอยู่
หากคุณต้องการเปลี่ยนค่า AUTO_INCREMENT ของตารางที่มีอยู่ ให้ใช้คำสั่งต่อไปนี้:
ALTER TABLE users AUTO_INCREMENT = 1000;
หลังจากรันคำสั่งนี้ เรคคอร์ดถัดไปที่แทรกจะเริ่มต้นด้วย ID 1000.
การเปลี่ยนค่าการเพิ่มของ AUTO_INCREMENT (MySQL 8.0 หรือใหม่กว่า)
โดยค่าเริ่มต้น ค่า AUTO_INCREMENT จะเพิ่มขึ้นทีละ 1 อย่างไรก็ตาม คุณสามารถเปลี่ยนค่าการเพิ่มได้หากต้องการ.
SET @@auto_increment_increment = 5;
ด้วยการตั้งค่านี้ ค่า AUTO_INCREMENT จะเพิ่มขึ้นทีละ 5 ทุกครั้ง (เช่น 1, 6, 11, …).
หมายเหตุสำคัญเมื่อใช้ AUTO_INCREMENT [Prevent Data Issues]
ขีดจำกัดค่าสูงสุดของ AUTO_INCREMENT
ค่าสูงสุดของ AUTO_INCREMENT ขึ้นอยู่กับประเภทข้อมูลของคอลัมน์ ตัวอย่างเช่น เมื่อใช้ประเภท INT ค่าสูงสุดคือ 2,147,483,647 หากเกินขีดจำกัดนี้ ID ใหม่จะไม่สามารถสร้างได้อีก ส่งผลให้เกิดข้อผิดพลาด.
วิธีแก้ไข
- ใช้
BIGINTเพื่อรองรับค่าที่ใหญ่กว่ามาก - พิจารณาการเก็บถาวรข้อมูลหรือรีเซ็ตเมื่อจำเป็น
พฤติกรรมของ AUTO_INCREMENT หลังจากลบข้อมูล
ใน MySQL การลบเรคคอร์ดจะไม่รีเซ็ตค่า AUTO_INCREMENT โดยอัตโนมัติ.
DELETE FROM users WHERE id = 100;
แม้ว่าจะลบ ID เฉพาะแบบนี้ ค่าใหม่ที่แทรกต่อไปก็จะดำเนินต่อจากตัวนับปัจจุบันโดยไม่ใช้ซ้ำ.
วิธีรีเซ็ต
การใช้ TRUNCATE TABLE จะลบข้อมูลทั้งหมดและรีเซ็ตค่า AUTO_INCREMENT.
TRUNCATE TABLE users;
หลังจากทำการดำเนินการนี้ ID ที่แทรกต่อไปจะเริ่มใหม่จาก 1.
ธุรกรรมและ AUTO_INCREMENT
ใน MySQL ค่า AUTO_INCREMENT จะไม่ย้อนกลับแม้ว่าเหตุการณ์จะถูกย้อนกลับ (ROLLBACK).
START TRANSACTION;
INSERT INTO users (name) VALUES ('Alice');
ROLLBACK;
ในกรณีนี้ ข้อมูลจะไม่ถูกแทรก แต่ค่า AUTO_INCREMENT ยังคงเพิ่มขึ้น ดังนั้นอาจเกิดช่องว่างในหมายเลข ID.
คำถามที่พบบ่อย (FAQ)
Q1: ทำไมค่าของ AUTO_INCREMENT บางครั้งถึงมีช่องว่าง?
A: เนื่องจากตัวเลขไม่ได้รีเซ็ตหลังจาก INSERT ตามด้วย ROLLBACK. การลบและการแทรกที่ล้มเหลวก็อาจทำให้เกิดช่องว่างได้เช่นกัน.
Q2: ฉันจะรีเซ็ตค่า AUTO_INCREMENT อย่างไร?
A: ใช้คำสั่ง TRUNCATE TABLE table_name; เพื่อรีเซ็ตค่า
Q3: ฉันจะตรวจสอบค่า AUTO_INCREMENT ปัจจุบันได้อย่างไร?
A: ใช้ SHOW TABLE STATUS หรือสอบถามจาก INFORMATION_SCHEMA.TABLES.
Q4: จะเกิดอะไรขึ้นหาก AUTO_INCREMENT เกินค่ามากสุด?
A: หากเกินค่ามากสุดของ INT จะเกิดข้อผิดพลาด คุณต้องเปลี่ยนประเภทคอลัมน์เป็น BIGINT.


