我有一个像这样的数据库表:
-- Table KNOWN_AS
create table `known_as`(
id int not null auto_increment,
person_id int not null,
default_name boolean not null,
first_name varchar(100) not null,
middle_name_1 varchar(100),
middle_name_2 varchar(100),
middle_name_3 varchar(100),
last_name varchar(100),
primary key(id),
foreign key(person_id) references `person`(id)
) engine=innodb;
插入值时,我想检查每个唯一的“person_id”是否只有一个真正的“default_name”。
我迄今为止所做的所有Google搜索都导致了一些页面解释了如何保持一个非负值,或者如何确保一个值是唯一的 - 而不是如何检查一个值在多个条目中是唯一的(但不是所有的的)。
任何帮助/指针都非常赞赏!!
答案 0 :(得分:1)
我想检查每个唯一的“person_id”是否只有一个真正的“default_name”
为什么不将default_name
列为NOT NULL
表中的person
列?
如何检查一个值在多个条目中是唯一的(但不是全部)
在复合UNIQUE
上定义(person_id, default_name)
索引:
ALTER TABLE known_as ADD UNIQUE INDEX (person_id, default_name);