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

สองคอลัมน์เป็น Primary Key พร้อม Auto Increment ใน MySQL

ใช้ 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