小编Jim*_*art的帖子

仅当第三列为 NOT NULL 时才使用两列外键约束

鉴于以下表格:

CREATE TABLE verified_name (
  id               SERIAL PRIMARY KEY,
  name             TEXT NOT NULL,
  email            TEXT NOT NULL,
  UNIQUE (name, email)
);

CREATE TABLE address (
  id               SERIAL PRIMARY KEY,
  name             TEXT NOT NULL,
  email            TEXT NOT NULL,
  verified_name_id INTEGER NULL REFERENCES verified_name(id)
);
Run Code Online (Sandbox Code Playgroud)

如何添加附加约束,当address.verified_name_id不为 NULL 时,nameemail字段address必须与引用的字段匹配verified_name

我尝试将以下内容添加到address

FOREIGN KEY (name, email) REFERENCES verified_name(name, email)
Run Code Online (Sandbox Code Playgroud)

...但即使verified_name_id是 NULL ,该约束也会被应用。

我正在寻找类似于部分索引语法的东西,带有像这样的子句WHERE verified_name_id IS NOT NULL,但是简单地将这样的子句附加到 …

postgresql normalization foreign-key database-design constraint

6
推荐指数
1
解决办法
6822
查看次数