独特值的MySQL约束

时间:2015-11-12 20:58:06

标签: mysql sql database constraints unique

你将如何在MySQL中创建一个具有约束的表,该表仅适用于您希望每个唯一记录中1个字段唯一的特定表?

例如,假设我有一个名为“person”的表,其中包含以下字段:

  1. person_social_security(主键)
  2. 为person_id
  3. PERSON_NAME
  4. person_phone_extension
  5. 对于每条记录,我想确保字段#3( person_phone_extension )对于每个 person_id 也始终是唯一的。换句话说, person_id 不应该有重复的 person_phone_extension 。但是,不同的 person_id 可以与另一个 person_id 具有相同的 person_phone_extension 。此表中可能有多个 person_id 实例。

1 个答案:

答案 0 :(得分:2)

http://sqlfiddle.com/#!9/df732/2

只需针对您的列设置UNIQUE KEY

create table person (
person_id int auto_increment primary key,
person_name varchar(50),
person_phone_extension int unique key);

使用我的小提琴你可以看到你是否取消注释我的上一个查询会带来关于重复值的mysql错误。

更新根据您的新评论,person_id不是主键,也不是唯一的。但应检查person_id + person_phone_extension的组合。因此,您需要针对以下两列设置密钥,如:

http://sqlfiddle.com/#!9/51547/1

create table person (
person_id int,
person_name varchar(50),
person_phone_extension int,
unique key idx (person_id,person_phone_extension));