ใช้ Storage Engine MyISAM
InnoDB ไม่รองรับ AUTO_INCREMENT บนคอลัมน์ที่สองของ Composite Primary Key แต่ MyISAM รองรับ
ตัวอย่าง
สร้างตาราง
mysql> create table TwoPrimaryKeyTableDemo (
-> Result ENUM('First','Second','Third','Fail') not null,
-> StudentId int not null auto_increment,
-> StudentName varchar(200) not null,
-> Primary key(Result,StudentId)
-> ) ENGINE=MyISAM;
Query OK, 0 rows affected (0.20 sec)
เพิ่มข้อมูล (ไม่ระบุ StudentId)
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('John','Fail');
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('Carol','First');
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('Smith','Third');
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('Johnson','Second');
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('Johnson','Third');
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('Carol','Second');
mysql> insert into TwoPrimaryKeyTableDemo(StudentName,Result) values('Carol','Fail');
แสดงผลเรียงตาม StudentId, Result
mysql> select * from TwoPrimaryKeyTableDemo order by StudentId,Result;
+--------+-----------+-------------+ | Result | StudentId | StudentName | +--------+-----------+-------------+ | First | 1 | Carol | | Second | 1 | Johnson | | Third | 1 | Smith | | Fail | 1 | John | | Second | 2 | Carol | | Third | 2 | Johnson | | Fail | 2 | Carol | +--------+-----------+-------------+ 7 rows in set (0.00 sec)
สังเกต
ค่า StudentId เริ่มที่ 1 ใหม่สำหรับแต่ละค่า Result ที่แตกต่างกัน (First=1, Second=1, Third=1, Fail=1 แล้ว Second=2, Third=2, Fail=2)
ข้อจำกัด: ต้องใช้ Engine MyISAM ไม่ได้กับ InnoDB