检测SQL表中行之间的循环引用

检测SQL表中行之间的循环引用,sql,sql-server,Sql,Sql Server,可能重复: 我需要一种在SQL Server中轻松检测具有employee/manager关系的表的循环引用的方法。有人写过这个查询吗?类似这样的东西吗 select ID from yourtable a where exists (select * from yourtable b where a.SourceID = b.TargetID and a.TargetID = b.SourceID

可能重复:

我需要一种在SQL Server中轻松检测具有employee/manager关系的表的循环引用的方法。有人写过这个查询吗?

类似这样的东西吗

select ID
from yourtable a
where exists (select *
              from yourtable b
              where a.SourceID = b.TargetID and
                    a.TargetID = b.SourceID)

当然,这不会检测到大圆圈(即
a-->b-->c-->a
)。为此,您需要更强大的功能,例如。

插入时是否将其作为触发器?或者,您是在寻找“事后”类型的报告吗?您使用的是哪种DBMS?神谕PostgreSQL?不知道代码是以“强度”为单位测量的,我也不知道猕猴桃有头发。