在PostgreSQL中是否可以有条件地添加外键?
类似这样的语法:ALTER TABLE table1 ADD FOREIGN KEY (some_id) REFERENCES other_table WHERE some_id NOT IN (0,-1) AND some_id IS NOT NULL;
具体而言,我的参考表只包含正整数(1+),但我需要添加外键到的表中可以包含零(0)、空值和负一(-1),它们都表示不同的意思。
注意:
我完全意识到这是糟糕的表设计,但这是10多年前建立的一个聪明技巧,当时我们可用的功能和资源还不存在。这个系统正在运行数百家零售店,所以回去改变方法可能需要数月时间,而我们没有这么多时间。
我不能使用触发器,必须使用外键完成。