我有一张表格,用于映射员工的利润分享。它允许给定的员工将其收入的一定百分比分配给另一名员工。这意味着给定员工不一定只有一个条目,可能有 0 个或更多。 Alice 可以给 Bob 5%,给 Charlie 3%,所以 Alice 在表中会有两条记录。
该表包含三个字段,FromEmployeeId
类型的 int
、ToEmployeeId
类型的 int
、PctShare
类型的 float
。>
当用户尝试添加新的映射记录时,我需要确保它不会导致循环引用。
问题是我有多个层次结构级别,每个员工可以有多个映射。最初我认为递归 CTE 可能有效,但我认为它不适用于多重映射问题。
这是一个例子:
Bob maps to Charlie and Yusuf
Charlie maps to David and William
Yusuf has no mappings
David maps to Alice and Vince
Vince has no mappings
Alice maps to Tucker
Tucker has no mappings
或以表格形式:
------------------------
| From | To |
------------------------
| Bob | Charlie|
| Bob | Yusuf |
| Charlie | David |
| Charlie | William|
| David | Alice |
| David | Vince |
| Alice | Tucker |
------------------------
如果用户尝试添加 Alice -> Bob 的映射记录,我想确认这会导致循环引用,因为 Bob -> Charlie -> David -> Alice。
我唯一的选择是像游标那样循环遍历每个结果集吗?