Oracle
 sql >> Base de données >  >> RDS >> Oracle

ORA-30926 :impossible d'obtenir un ensemble stable de lignes dans les tables source

Cela est généralement dû à des doublons dans la requête spécifiée dans la clause USING. Cela signifie probablement que TABLE_A est une table parent et que le même ROWID est renvoyé plusieurs fois.

Vous pourriez rapidement résoudre le problème en utilisant un DISTINCT dans votre requête (en fait, si 'Y' est une valeur constante, vous n'avez même pas besoin de la mettre dans la requête).

En supposant que votre requête est correcte (vous ne connaissez pas vos tables), vous pouvez faire quelque chose comme ceci :

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