Oracle
 sql >> Base de Dados >  >> RDS >> Oracle

ORA-30926:incapaz de obter um conjunto estável de linhas nas tabelas de origem


Isso geralmente é causado por duplicatas na consulta especificada na cláusula USING. Isso provavelmente significa que TABLE_A é uma tabela pai e o mesmo ROWID é retornado várias vezes.

Você pode resolver o problema rapidamente usando um DISTINCT em sua consulta (na verdade, se 'Y' for um valor constante, você nem precisa colocá-lo na consulta).

Supondo que sua consulta esteja correta (não conheça suas tabelas), você poderia fazer algo assim:
  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';