MySQL 中的复合唯一性强制实施可以实现吗?
是的,这是可以实现的。为了理解这一点,让我们首先创建一个表——
mysql>create table enforceCompoundUniqueness
->(
->StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
->StudentName varchar(40) NOT NULL,
->StudentMobileNumber varchar(12) NOT NULL,
->UNIQUE StudentName_StudentMobileNumber(StudentName,StudentMobileNumber)
->);
Query OK,影响了 0 行(用时 0.60 秒)
下面是使用 insert 命令向表中插入记录的查询语句——
mysql> insert into enforceCompoundUniqueness(StudentName, StudentMobileNumber)
values('Larry','2322245676');
Query OK,影响了 1 行(用时 0.18 秒)
mysql> insert into enforceCompoundUniqueness(StudentName, StudentMobileNumber)
values('Larry','2322245676');
ERROR 1062 (23000): Duplicate entry 'Larry-2322245676' for key
'StudentName_StudentMobileNumber'
mysql> insert into enforceCompoundUniqueness(StudentName, StudentMobileNumber)
values('Sam','6475746455');
Query OK,影响了 1 行(用时 0.13 秒)
在上面的查询语句中,如果你尝试插入重复的记录,就会出现错误,因为我们已经强制实施了唯一性。
下面是使用 select 语句从表中显示所有记录的查询语句——
mysql> select * from enforceCompoundUniqueness;
这将输出如下内容——
+-----------+-------------+---------------------+
| StudentId | StudentName | StudentMobileNumber |
+-----------+-------------+---------------------+
| 1 | Larry | 2322245676 |
| 3 | Sam | 6475746455 |
+-----------+-------------+---------------------+
共 2 行(用时 0.00 秒)
阅读更多:MySQL 教程
极客教程