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

Aktualizace dotazu Oracle SQL Update trvá několik dní

Můžete to zkusit

  1  MERGE
  2     INTO  target_table tgt
  3     USING source_table src
  4     ON  ( src.object_id = tgt.object_id )
  5  WHEN MATCHED
  6  THEN
  7     UPDATE
  8     SET   tgt.object_name = src.object_name
  9     ,     tgt.object_type = src.object_type
 10  WHEN NOT MATCHED
 11  THEN
 12     INSERT ( tgt.object_id
 13            , tgt.object_name
 14            , tgt.object_type )
 15     VALUES ( src.object_id
 16            , src.object_name
 17            , src.object_type );

Syntaxe na první pohled vypadá trochu skličující, ale pokud ji čteme odshora dolů, je docela intuitivní. Všimněte si následujících klauzulí:

•MERGE (řádek 1):jak bylo uvedeno dříve, toto je nyní 4. příkaz DML v Oracle. Jakékoli rady, které bychom mohli chtít přidat, následují přímo za tímto klíčovým slovem (např. MERGE /*+ HINT */);

•INTO (řádek 2):takto specifikujeme cíl pro MERGE. Cílem musí být buď tabulka, nebo aktualizovatelný pohled (zde nelze použít in-line pohled);

•USING (řádek 3):klauzule USING představuje zdrojovou datovou sadu pro MERGE. Může to být jedna tabulka (jako v našem příkladu) nebo zobrazení v řádku;

•ON () (řádek 4):klauzule ON poskytuje spojení mezi zdrojovou datovou množinou a cílovou tabulkou. Všimněte si, že podmínky spojení musí být v závorkách;

•WHEN MATCHED (řádek 5):tato klauzule je místem, kde instruujeme Oracle, co dělat, když již máme odpovídající záznam v cílové tabulce (tj. existuje spojení mezi zdrojovou a cílovou datovou množinou). V tomto případě samozřejmě chceme AKTUALIZACI. Jedním z omezení této klauzule je, že nemůžeme aktualizovat žádný ze sloupců použitých v klauzuli ON (ačkoli to samozřejmě nepotřebujeme, protože se již shodují). Jakýkoli pokus o zahrnutí sloupce spojení vyvolá neintuitivní výjimku neplatného identifikátoru; a

•WHEN NOT MATCHED (řádek 10):tato klauzule je místo, kam VLOŽÍME záznamy, pro které neexistuje žádná aktuální shoda.



  1. Na DbContextOptions nelze najít metodu UseMysql

  2. Jak kopírovat tabulky bez kurzorů v SQL?

  3. MySQL:nahradit výskyt řetězce v poli kromě prvního

  4. Zástupný symbol .NET MySqlCommand @ je v konfliktu s proměnnou MySQL