是否有可能(在PostgreSQL中)制作一个约束,指出列必须为null 或包含另一个列的值,在另一个表中?换句话说,要将CHECK约束与FOREIGN KEY约束组合?
我想要定义的是列
所以有些内容(不起作用):
ALTER TABLE MyTable ADD CONSTRAINT my_constraint
CHECK (languageCode IS NULL) OR (languageCode) REFERENCES Languages (languageCode)
答案 0 :(得分:2)
根据MarcB的评论:NULLable列上的外键约束将完全按照你的要求进行。
但是,一般来说,强制执行“复杂”约束的最常用方法是使用逻辑(返回布尔值)和CHECK函数创建标量函数(传入要检查的值或表的PK,或任何适合您需要的东西)。