Oracle
 sql >> Database >  >> RDS >> Oracle

ORA-30926:impossibile ottenere un set stabile di righe nelle tabelle di origine

Ciò è in genere causato da duplicati nella query specificata nella clausola USING. Questo probabilmente significa che TABLE_A è una tabella padre e lo stesso ROWID viene restituito più volte.

Potresti risolvere rapidamente il problema utilizzando un DISTINCT nella tua query (infatti, se 'Y' è un valore costante non è nemmeno necessario inserirlo nella query).

Supponendo che la tua query sia corretta (non conosco le tue tabelle) potresti fare qualcosa del genere:

  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';