【问题标题】:MySQL Check ConstraintsMySQL 检查约束
【发布时间】:2023-03-13 14:36:01
【问题描述】:

我有一个这样的数据库表:

-- 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”。

到目前为止,我所做的所有谷歌搜索等都导致页面解释如何保持一个非负值,或如何确保一个值是唯一的——而不是如何检查一个值在多个条目中是唯一的(但不是全部)。

非常感谢任何帮助/指针!

【问题讨论】:

  • 您的问题涉及两个完全不同的事情:1. 我想检查每个唯一的“person_id”是否有一个真正的“default_name” 和 2.如何检查一个值在多个条目中是否唯一(但不是全部)。你想要哪个?

标签: mysql constraints create-table


【解决方案1】:
  1. 我想检查每个唯一的“person_id”是否有一个真正的“default_name”

    为什么不将default_name 存储为NOT NULL 列在person 表中?

  2. 如何检查一个值在多个条目中是否唯一(但不是全部)

    在复合 (person_id, default_name) 上定义一个 UNIQUE 索引:

     ALTER TABLE known_as ADD UNIQUE INDEX (person_id, default_name);
    

【讨论】:

  • 谢谢 - 我显然是在错误的方向与约束:)
猜你喜欢
  • 2014-06-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-02-28
相关资源
最近更新 更多