ใช้คำสั่ง ALTER TABLE 2 ขั้นตอน: 1) ทำให้คอลัมน์เป็น PK + AUTO_INCREMENT 2) ตั้งค่าเริ่มต้น
ขั้นตอนที่ 1: ทำให้เป็น PK และ AUTO_INCREMENT
ALTER TABLE yourTableName MODIFY yourColumnName INT NOT NULL AUTO_INCREMENT PRIMARY KEY, ADD INDEX(yourColumnName);
ขั้นตอนที่ 2: ตั้งค่า AUTO_INCREMENT เริ่มต้น
ALTER TABLE yourTableName AUTO_INCREMENT = yourStartingValue;
ตัวอย่างสมบูรณ์
สร้างตาราง
mysql> CREATE TABLE setAutoIncrementDemo (
-> UserId INT,
-> UserName VARCHAR(20)
-> );
ขั้นตอนที่ 1
mysql> ALTER TABLE setAutoIncrementDemo
-> MODIFY UserId INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
-> ADD INDEX(UserId);
Query OK, 0 rows affected (1.51 sec)
ขั้นตอนที่ 2: เริ่มที่ 1000
mysql> ALTER TABLE setAutoIncrementDemo AUTO_INCREMENT = 1000; Query OK, 0 rows affected (0.34 sec)
ทดสอบ INSERT
mysql> INSERT INTO setAutoIncrementDemo(UserName) VALUES ('John'), ('Carol'), ('Sam');
ผลลัพธ์ (UserId เริ่มที่ 1000)
+--------+----------+ | UserId | UserName | +--------+----------+ | 1000 | John | | 1001 | Carol | | 1002 | Sam | +--------+----------+
ข้อสังเกต
AUTO_INCREMENTต้องอยู่บนคอลัมน์ที่เป็นPRIMARY KEYหรือUNIQUE KEY- ค่าเริ่มต้นต้องมากกว่าค่าสูงสุดที่มีอยู่ (ถ้ามีข้อมูลแล้ว)
- MyISAM: สามารถตั้งค่าได้ตลอด | InnoDB: ต้องไม่มีข้อมูลหรือค่าใหม่ > MAX(id)
- ใช้
SHOW TABLE STATUS LIKE 'table_name'ดูค่า AUTO_INCREMENT ปัจจุบัน
ตั้งค่าตอนสร้างตาราง (CREATE TABLE)
CREATE TABLE demo (
id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(50)
) AUTO_INCREMENT = 1000;
รีเซ็ต AUTO_INCREMENT (หลังลบข้อมูลมาก)
ALTER TABLE table_name AUTO_INCREMENT = 1; -- เริ่มที่ 1 ใหม่ (ถ้าตารางว่าง)