sql >> Databáze >  >> RDS >> Oracle

ORA-30926:nelze získat stabilní sadu řádků ve zdrojových tabulkách

To je obvykle způsobeno duplikáty v dotazu uvedeném v klauzuli USING. To pravděpodobně znamená, že TABLE_A je nadřazená tabulka a stejný ROWID je vrácen několikrát.

Problém můžete rychle vyřešit použitím DISTINCT ve svém dotazu (ve skutečnosti, pokud je 'Y' konstantní hodnotou, nemusíte ji ani vkládat do dotazu).

Za předpokladu, že je váš dotaz správný (neznáte své tabulky), můžete udělat něco takového:

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


  1. Jak funguje funkce INSERT() v MariaDB

  2. Průvodce PGpool - Rady a postřehy:Část třetí

  3. OBJEDNAT PODLE DATA zobrazující nejdříve NULLS a poté nejnovější data

  4. Nasazení MariaDB Sharding s Spider pomocí ClusterControl