ค่าสูงสุดของ AUTO_INCREMENT ตามชนิดข้อมูล
ขีดจำกัดของคอลัมน์ AUTO_INCREMENT ขึ้นอยู่กับชนิดข้อมูล (Data Type) ที่ใช้ เนื่องจาก AUTO_INCREMENT เพียงแค่เพิ่มค่าตัวเลขอัตโนมัติ
ตารางขีดจำกัดตาม Data Type
| Data Type | Signed (มีเครื่องหมาย) | Unsigned (ไม่มีเครื่องหมาย) |
|---|---|---|
| TINYINT | 127 | 255 |
| SMALLINT | 32,767 | 65,535 |
| MEDIUMINT | 8,388,607 | 16,777,215 |
| INT | 2,147,483,647 | 4,294,967,295 |
| BIGINT | 9,223,372,036,854,775,807 | 18,446,744,073,709,551,615 |
ตัวอย่าง: TINYINT ถึงขีดจำกัด
สร้างตารางด้วย TINYINT (สูงสุด 127):
CREATE TABLE LimitOfAutoIncrement (
Id TINYINT NOT NULL AUTO_INCREMENT,
PRIMARY KEY(Id)
);
เพิ่ม 127 แถว (สำเร็จ):
INSERT INTO LimitOfAutoIncrement VALUES(),(),()... (127 ครั้ง);
พยายามเพิ่มแถวที่ 128 (Error):
INSERT INTO LimitOfAutoIncrement VALUES();
-- ERROR 1062 (23000): Duplicate entry '127' for key 'PRIMARY'
คำแนะนำในการเลือก Data Type
- TINYINT/SMALLINT - เหมาะสำหรับตารางเล็ก ค่าคงที่ (lookup tables)
- INT - มาตรฐานสำหรับตารางทั่วไป (~2 พันล้านแถว)
- BIGINT - ระบบใหญ่, log tables, distributed systems
- ใช้
UNSIGNEDเพื่อเพิ่มช่วงค่า 2 เท่า (หากไม่ต้องการค่าลบ)
การตรวจสอบค่าปัจจุบันและขีดจำกัด
-- ดูค่า AUTO_INCREMENT ปัจจุบัน
SHOW TABLE STATUS LIKE 'your_table_name';
-- หรือ
SELECT AUTO_INCREMENT FROM information_schema.TABLES
WHERE TABLE_SCHEMA = 'your_db' AND TABLE_NAME = 'your_table';
การรีเซ็ต AUTO_INCREMENT
ALTER TABLE your_table AUTO_INCREMENT = 1; -- เริ่มจาก 1 ใหม่ (ต้องไม่มีข้อมูลหรือค่าสูงกว่า)