0

我的印象是 CHECK() 约束只能引用同一行中的值。我试图弄清楚,然后我可以如何执行以下规则:

给定下表:

PK_Employee_ID | Employee_Name | Manager_ID

其中 Manager ID 是表中另一个员工的 ID。我需要一个规则,如果给定行的 PK_Employee_ID 已在另一行的 Manager_ID 中引用,则它自己的 Manager_ID 必须为空。那是:

不是每个员工都需要有经理,但作为另一名员工的经理的员工可能没有经理。

我知道还有其他方法可以解决问题;可能有另一个位列只是“Is_Manager”,如果为 1,则意味着 Manager_ID 必须为空。但是,我更喜欢更优雅的解决方案,而不是明确地告诉每一行他们是否是经理,而是让他们通过查看其他行自己弄清楚。这将使更改给定行之间的关系变得更加容易。或者,这种简单的处理问题的方法是否非常低效?

4

0 回答 0