如何遍历层次结构以查找循环引用?

时间:2021-04-20 16:12:38

标签: sql-server sql-server-2014

我有一张表格,用于映射员工的利润分享。它允许给定的员工将其收入的一定百分比分配给另一名员工。这意味着给定员工不一定只有一个条目,可能有 0 个或更多。 Alice 可以给 Bob 5%,给 Charlie 3%,所以 Alice 在表中会有两条记录。

该表包含三个字段,FromEmployeeId 类型的 intToEmployeeId 类型的 intPctShare 类型的 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。

我唯一的选择是像游标那样循环遍历每个结果集吗?

0 个答案:

没有答案
相关问题