Oracle
 sql >> Datenbank >  >> RDS >> Oracle

ORA-30926:In den Quelltabellen kann kein stabiler Satz von Zeilen abgerufen werden

Dies wird normalerweise durch Duplikate in der in der USING-Klausel angegebenen Abfrage verursacht. Dies bedeutet wahrscheinlich, dass TABLE_A eine übergeordnete Tabelle ist und dieselbe ROWID mehrmals zurückgegeben wird.

Sie könnten das Problem schnell lösen, indem Sie in Ihrer Abfrage ein DISTINCT verwenden (wenn 'Y' ein konstanter Wert ist, müssen Sie ihn nicht einmal in die Abfrage einfügen).

Angenommen, Ihre Abfrage ist korrekt (kennen Sie Ihre Tabellen nicht), könnten Sie etwa so vorgehen:

  MERGE INTO table_1 a
      USING 
      (SELECT distinct ta.ROWID row_id
              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';