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

ขีดจำกัดของ AUTO_INCREMENT (Integer) ใน MySQL

ค่าสูงสุดของ AUTO_INCREMENT ตามชนิดข้อมูล

ขีดจำกัดของคอลัมน์ AUTO_INCREMENT ขึ้นอยู่กับชนิดข้อมูล (Data Type) ที่ใช้ เนื่องจาก AUTO_INCREMENT เพียงแค่เพิ่มค่าตัวเลขอัตโนมัติ

ตารางขีดจำกัดตาม Data Type

Data TypeSigned (มีเครื่องหมาย)Unsigned (ไม่มีเครื่องหมาย)
TINYINT127255
SMALLINT32,76765,535
MEDIUMINT8,388,60716,777,215
INT2,147,483,6474,294,967,295
BIGINT9,223,372,036,854,775,80718,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 ใหม่ (ต้องไม่มีข้อมูลหรือค่าสูงกว่า)