如何在 MySQL 中创建一个带有约束的表,该约束仅适用于 1 个特定表,其中您希望每个唯一记录有 1 个字段是唯一的?
例如,假设我有一个名为“person”的表,其中包含以下字段:
- person_social_security(主键)
- person_id
- 人物名称
- person_phone_extension
对于每条记录,我想确保字段 #3 (person_phone_extension) 对于每个 person_id 也始终是唯一的。换句话说,person_id 决不应该有重复的person_phone_extension。但是,不同的 person_id 可以与另一个 person_id 具有相同的 person_phone_extension。此表中可以有多个 person_id 实例。
最佳答案
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);
使用我的 fiddle ,您可以查看是否取消注释我的最后一个查询,该查询将带来有关重复值的 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));
关于MySQL 对唯一值的约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33681215/