0

ご存知のようscott.empに、オラクルのテーブルには階層に循環がありません。しかしemp、テーブルを少し(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 が表示されません。理由が分かれば回答お願いします。

4

1 に答える 1

0

Martin も Blake も階層に到達することはありません。それらを相互に関連させましたが、開始条件のために、選択しているどのチェーンにも含まれていません。

接続基準はprior emp = mgr、それらが関連していることに基づいていますが、どちらもそれらの上にある他の誰かにリンクされていません。それらは独自の小さな島を形成し、その島はmgr IS NULL開始条件と一致しません。または、必要に応じて、mgr null である任意のレコードから開始すると、これらのレコードのいずれにもパスがありません。

開始条件を削除すると、不要なデータがさらに多く表示されますが、これには Martin と Blake が含まれ、それらのサイクル フラグが表示されます。

于 2016-04-16T07:20:53.310 に答える