为什么 CONNECT_BY_ISCYCLE 有循环时 CONNECT_BY_ISCYCLE 不给 1?

Why CONNECT_BY_ISCYCLE doesn't give 1 when table has a cycle?

众所周知scott.emp table Oracle 的层次结构没有任何循环。 但我稍微更改了 emp table (UPDATE emp SET mgr=7654 WHERE empno=7698),其中我将 Martin 的经理更改为 Blake,将 Blake 的经理更改为 Martin,并在查询后解雇。

SELECT
  empno,
  ename,
  mgr,
  level,
  connect_by_iscycle
FROM emp
START WITH mgr IS NULL
CONNECT BY NOCYCLE prior empno=mgr
ORDER SIBLINGS BY mgr

但它没有给出 Martin 和 Blake 相关条目,也没有在预期字段中显示 1。知道的请回答原因

Martin 和 Blake 都没有进入等级制度。您已经使它们相互关联,但由于开始条件的原因,它们不再位于您选择的任何链中。

连接标准是 prior emp = mgr 所以基于它们是相关的,但现在都没有链接到它们之上的任何其他人。他们组成了自己的小岛,而那个小岛不符合 mgr IS NULL 开始条件。或者,如果您愿意,如果您从 mgr 的任何记录开始,则没有通往这些记录的路径。

如果您删除了开始条件,您会看到更多您不想要的数据,但这将包括 Martin 和 Blake,并且会显示他们的循环标志。