TA id name
1 A
2 B
3 C
4 D
.......TBid ParentID ChildID
1 1 2
2 2 3
3 3 4
4 4 1表A是主表(存储所有的数据,无关系排列)
表B是关系表,存储表A中各条记录的关系,我做了一个自定义函数,如果传入一个TA表中的一个ID,会用递归的方式查出他所有的节点(树状结构)但是明显能看到TB中的关系存在循环引用哪位能帮忙写一个验证是否存在循环关系的函数啊 不胜感激条件是传入一个ID,察看从它开始的所有节点是否存在循环引用,着急
1 A
2 B
3 C
4 D
.......TBid ParentID ChildID
1 1 2
2 2 3
3 3 4
4 4 1表A是主表(存储所有的数据,无关系排列)
表B是关系表,存储表A中各条记录的关系,我做了一个自定义函数,如果传入一个TA表中的一个ID,会用递归的方式查出他所有的节点(树状结构)但是明显能看到TB中的关系存在循环引用哪位能帮忙写一个验证是否存在循环关系的函数啊 不胜感激条件是传入一个ID,察看从它开始的所有节点是否存在循环引用,着急
RETURNS bit
AS
BEGIN
DECLARE @re bit, @pid int
SELECT @re = 0, @pid = ParentID
FROM TB
WHERE ChildID = @id
WHILE @@ROWCOUNT >0
BEGIN
IF @pid = @ID
RETURN 1
SELECT @re = 0, @pid = ParentID
FROM TB
WHERE ChildID = @pid
END
RETURN(0)
END
GO