sql >> Base de Datos >  >> RDS >> Oracle

ORA-30926:no se puede obtener un conjunto estable de filas en las tablas de origen

Esto suele deberse a duplicados en la consulta especificada en la cláusula USING. Esto probablemente significa que TABLE_A es una tabla principal y se devuelve el mismo ROWID varias veces.

Podría resolver el problema rápidamente usando DISTINCT en su consulta (de hecho, si 'Y' es un valor constante, ni siquiera necesita ponerlo en la consulta).

Suponiendo que su consulta sea correcta (no conozca sus tablas), podría hacer algo como esto:

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