本文通过实例,验证了PostgreSQL外键可以为空(null)。
1.建表
商品表
create table goods(
id int primary key
);
订单表
create table orders(
id int,
goodid int references goods(id)
);
2.插入数据
订单表中,试图插入不存在的商品时,不符合外键的约束,报错。
insert into orders values(1,1);
错误: 插入或更新表 "orders" 违反外键约束 "orders_goodid_fkey"
描述: 键值对(goodid)=(1)没有在表"goods"中出现.
订单表中,插入商品为null时,插入成功。
insert into orders values(1,null);
insert into orders(id) values(2);
查看订单表中的数据。
select * from orders;