表示强制参与Postgres的最佳方式是什么?我曾经在CHECK约束中使用它,或者在Sybase中使用INSERT和DELETE TRIGGER。 Postgres不支持CHECK约束中的子查询,我无法正确获取触发器。
我想找到以下替代方案:
ALTER TABLE member
ADD CONSTRAINT member_in_has_address
CHECK (EXISTS (SELECT *
FROM address a
WHERE member_id = a.member_id));
答案 0 :(得分:4)
我使用可延迟约束触发器解决1:m强制关系。
逻辑是:
触发器在提交之前运行,如果它不喜欢它所看到的内容,可以通过引发异常来中止提交。
答案 1 :(得分:0)
总而言之,问题可以通过以下方式解决:
我将尝试所有这些。