首页 > 解决方案 > 是否可以在 PostgreSQL 中创建可为空的外键约束?

问题描述

我在表“XY”上有一个可为空的 int8 列“z_id”。“z_id”是“Z”表的主键。如果在持久化期间提供了“z_id”,我想要一个将“Z”实体映射到“XY”表的约束。

标签: sqlpostgresql

解决方案


如果我对您的理解正确,您可以尝试:

t=# create table z(i int primary key);
CREATE TABLE
t=# insert into z values (1);
INSERT 0 1
t=# create table xy(i int);
CREATE TABLE
t=# insert into xy values(1),(null);
INSERT 0 2
t=# alter table xy add constraint fk foreign key (i) references z(i);
ALTER TABLE
t=# select * from xy;
 i
---
 1

(2 rows)

你可能有同样的怀疑


推荐阅读