SQLFiddle
我有一个成分表和一个将成分相互链接的自引用关联表。
我想添加一个约束,确保两种成分之间的每个关联只能存在一次。如果“salt”已经与“pepper”相关联,我想阻止关联表中的另一行将“pepper”与“salt”相关联。
我知道我可以使用触发器,但因为它更复杂,我更喜欢使用约束。
(使用PostgreSQL 14+)
- a:使用约束条件是否可能?
- B:如果不是,触发器是最直接的解决方案还是有更好的方法?
SQLFiddle
我有一个成分表和一个将成分相互链接的自引用关联表。
我想添加一个约束,确保两种成分之间的每个关联只能存在一次。如果“salt”已经与“pepper”相关联,我想阻止关联表中的另一行将“pepper”与“salt”相关联。
我知道我可以使用触发器,但因为它更复杂,我更喜欢使用约束。
(使用PostgreSQL 14+)
1条答案
按热度按时间cygmwpex1#
一个选项在列元组的最大/最小值上使用唯一索引:
Demo on DB Fiddle:
另一种方法是排除约束:
这将为错误的insert语句产生以下错误:
Fiddle