【发布时间】:2014-07-01 18:08:14
【问题描述】:
我正在尝试将一个数据库从 file-maker pro 导入 PostgreSQL。由于维护不善,随着时间的推移,数据表之间的链接出现了一些退化。
我尝试导入没有约束的数据,然后使用 USING bock 添加约束,如果引用的值不存在,则将其设置为 null。
我有两张桌子,一张people 桌子和一张show 桌子。我想在show 表的show_leader_id 列中将所有不存在的人员ID 设置为空。这是我所拥有的:
BEGIN;
ALTER TABLE show ADD FOREIGN KEY (show_leader_id) REFERENCES people
USING (CASE WHEN (SELECT COUNT(*) FROM people WHERE person_id=show_leader_id)=1 THEN show_leader_id ELSE NULL END);
COMMIT;
【问题讨论】:
标签: sql postgresql null foreign-keys referential-integrity