MySQL – 让一对值成为唯一
在MySQL中,我们常常需要保证一对特定的值是唯一的,这时候我们可以使用“唯一约束(UNIQUE CONSTRAINT)”来限制这样的唯一性要求。
例如,我们有一个表格“students”,其中有两个字段“name”和“id”,我们希望每个“name”和“id”这对值不能有一样的,怎么办呢?我们可以使用如下的SQL语句:
CREATE TABLE students (
name VARCHAR(50) NOT NULL,
id INT(10) NOT NULL,
PRIMARY KEY (name, id),
UNIQUE KEY (id, name)
);
在表格的建立过程中,我们定义了“students”表格中的两个字段“name”和“id”为复合主键(PRIMARY KEY)。这意味着每个“name”和“id”组合在一起必须是唯一的,而单独的“name”或“id”则可以重复;同时我们还使用了一个UNIQUE约束,这使得唯一键为(id, name)。
举个例子,表格中可以这么定义:
name | id
-----------|-----
Alice | 1
Bob | 2
Charlie | 3
Dave | 1 -- 如果尝试这一行,会导致一个错误
Alice | 4
以上表格可以被解读为:
- Alice的编号是1
- Bob的编号是2
- Charlie的编号是3
- Dave的编号是1,但这会因重复而失败
- Alice的编号是4
注意,在复合主键中,“name”必须在“id”之前定义,因为我们在主键定义中先定义的字段优先级更高,也就是说,优先级高的字段是我们用于约束唯一性的字段。
阅读更多:MySQL 教程
总结
通过使用UNIQUE约束来限制MySQL中组合字段的唯一约束要求,我们可以保证一对特定的值是唯一的。
极客笔记