我认为CHECK()约束可能只引用相同行中的值。我想弄明白,然后如何执行以下规则:
鉴于以下表格:
PK_Employee_ID | Employee_Name | Manager_ID
其中Manager ID是表中另一个Employee的ID。我需要一个规则,如果给定行的PK_Employee_ID已在另一行的Manager_ID中引用,则它自己的Manager_ID必须为null。那就是:
并非每个员工都需要经理,但是 作为另一名员工经理的员工可能不会有经理。
我知道还有其他方法可以解决问题;可能有另一个位列只是“Is_Manager”,如果为1,则表示Manager_ID必须为空。但是,我更喜欢更优雅的解决方案,而不是明确告诉每一行他们是否是经理,让他们通过查看其他行来自行解决。这将使更改给定行之间的关系变得更加容易。或者,这是一种非常低效的处理问题的方法吗?