DBAtlas · データベース運用アトラス

ORA-30926: unable to get a stable set of rows in the source tables(ソース表の安定した行セットを取得できない)

Oracle

意味

MERGE (または更新可能な結合) 文で、ソース側が同じターゲット行に対して複数の一致行を生成した。Oracle はどのソース値で更新すべきか判断できないため、操作を停止した。

原因

MERGE ... USING のソースに ON 条件の重複一致が含まれる、ソースクエリがターゲットキーに対して一意でない、複数のソース行が同じターゲット行に対応する。

対処方法

ソースクエリをターゲットキーに対して一意にする。重複一致を検出する: SELECT key_col, COUNT(*) FROM (source_query) GROUP BY key_col HAVING COUNT(*) > 1; DISTINCT または集計/分析関数 (ROW_NUMBER) でソースの重複を排除してから MERGE を再実行する。ON 条件の選択性が十分であることを確認する。

DBAtlas で開く →

同じデータベースの他の項目