คำตอบสั้น: ใช่ ควรใช้ AUTO_INCREMENT ร่วมกับ PRIMARY KEY
ใน MySQL คอลัมน์ที่ตั้งค่า AUTO_INCREMENT ต้องเป็น Primary Key หรือมี Unique Index อยู่แล้ว มิฉะนั้นจะเกิดข้อผิดพลาด นี่เป็นข้อกำหนดของระบบเพื่อให้แน่ใจว่าค่าที่สร้างขึ้นมานั้นไม่ซ้ำกันและสามารถระบุแถว (row) ได้อย่างถูกต้อง
ตัวอย่างการสร้างตาราง
mysql> CREATE TABLE DemoTable (
EmployeeId INT NOT NULL AUTO_INCREMENT,
EmployeeName VARCHAR(40),
EmployeeAge INT,
PRIMARY KEY (EmployeeId),
UNIQUE KEY (EmployeeName, EmployeeAge)
);
ตรวจสอบโครงสร้างตาราง
mysql> DESC DemoTable;
ผลลัพธ์:
+--------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+-------------+------+-----+---------+----------------+
| EmployeeId | int(11) | NO | PRI | NULL | auto_increment |
| EmployeeName | varchar(40) | YES | MUL | NULL | |
| EmployeeAge | int(11) | YES | | NULL | |
+--------------+-------------+------+-----+---------+----------------+
ทดสอบเพิ่มข้อมูล
mysql> INSERT INTO DemoTable (EmployeeName, EmployeeAge) VALUES ('Chris', 25);
mysql> INSERT INTO DemoTable (EmployeeName, EmployeeAge) VALUES ('Robert', 34);
mysql> INSERT INTO DemoTable (EmployeeName, EmployeeAge) VALUES ('Mike', 32);
ดูข้อมูลทั้งหมด
mysql> SELECT * FROM DemoTable;
ผลลัพธ์:
+------------+--------------+-------------+
| EmployeeId | EmployeeName | EmployeeAge |
+------------+--------------+-------------+
| 1 | Chris | 25 |
| 3 | Mike | 32 |
| 2 | Robert | 34 |
+------------+--------------+-------------+
สรุป
- AUTO_INCREMENT ทำงานได้ก็ต่อเมื่อคอลัมน์นั้นเป็น PRIMARY KEY หรือมี UNIQUE INDEX
- PRIMARY KEY ให้การระบุแถวได้เร็วที่สุดและป้องกันค่าซ้ำอัตโนมัติ
- หากไม่ต้องการเป็น PRIMARY KEY ต้องสร้าง UNIQUE INDEX ให้คอลัมน์นั้นแทน