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 条件の選択性が十分であることを確認する。
同じデータベースの他の項目
- ORA-04068existing state of packages has been discarded(パッケージの既存の状態が破棄された)
- ORA-01427single-row subquery returns more than one row(単一行副クエリが複数行を返した)
- ORA-12899value too large for column(列に対して値が大きすぎる)
- ORA-08103object no longer exists(オブジェクトがもう存在しない)
- ORA-01843not a valid month(月が無効)
- ORA-14400inserted partition key does not map to any partition(パーティションキーがどのパーティションにも対応しない)
- ORA-01536space quota exceeded for tablespace(表領域の領域割り当て制限を超過)