我知道我可以设置一个FK约束来确保Table1.ColA存在 Table2.Key,但是,如果我想反过来呢?
我想确保Table2.KolA在Table2.Key中不存在..我可以吗 这与任何类型的CHECK约束,触发器,自定义函数等? 谢谢!
编辑:
假设我有一个名为“姓名”的表:
1 Michael
2 David
3 William
现在我有一张名为“Nicknames”的表:
Mike -> 1
Mikey -> 1
Dave -> 2
Bill -> 3
Will -> 3
我想确保没有人将“Michael”行添加到“Nicknames”中,因为它已经存在于“Names”中。
答案 0 :(得分:2)
在标准SQL中,您可以使用CREATE ASSERTION
,但PostgreSQL不支持它。您可以在两个表的触发器中伪造它(例如UNION
两个表,GROUP BY
名称和测试COUNT(*) > 1
或者只是测试逻辑inserted
表值不会出现在另一个表中)或其他程序代码。
您可以使用一个表格和一个显式子类型“设计”问题并使用传统的UNIQUE
约束,如@gbn所示。
答案 1 :(得分:1)
您是否考虑过使用一张
表据我了解,您有一个应该是唯一的名称列表。
这将不再需要任何代码来维护“非FK”