1. ホーム
  2. oracle

[解決済み】ORA-30926:ソーステーブルの安定した行のセットを取得できません。

2022-01-31 06:15:31

質問

を得ています。

ORA-30926: ソース・テーブルの安定した行のセットを取得できません。

を次のクエリで実行します。

  MERGE INTO table_1 a
      USING 
      (SELECT a.ROWID row_id, 'Y'
              FROM table_1 a ,table_2 b ,table_3 c
              WHERE a.mbr = c.mbr
              AND b.head = c.head
              AND b.type_of_action <> '6') src
              ON ( a.ROWID = src.row_id )
  WHEN MATCHED THEN UPDATE SET in_correct = 'Y';

走ったことがある {{コード を実行したところ、データを取得することができました。 {コード ) にもデータがあります。

なぜこのようなエラーが発生するのでしょうか、また、どのように解決すればよいのでしょうか。

解決方法は?

これは通常、USING句で指定されたクエリに重複があることが原因です。これはおそらく、TABLE_Aが親テーブルで、同じROWIDが何度も返されることを意味します。

クエリでDISTINCTを使用すれば、すぐに問題を解決できます(実際、'Y'が定数値であれば、クエリに入れる必要さえありません)。

クエリーが正しいと仮定すると(テーブルを知らないので)、次のようになります。

table_1