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

Oracle vložit, pokud řádek neexistuje

Když to spustím, zobrazí se mi chyba „chybějící klíčové slovo INTO“.

Protože IGNORE není klíčové slovo v Oracle. To je syntaxe MySQL.

Co můžete udělat, je použít MERGE.

merge into table1 t1
    using (select 'value1' as value1 ,value2 
           from table2 
           where table2.type = 'ok' ) t2
    on ( t1.value1 = t2.value1)
when not matched then
   insert values (t2.value1, t2.value2)
/

Od Oracle 10g můžeme použít merge bez manipulace s oběma větvemi. V 9i jsme museli použít "fiktivní" větev MATCHED.

Ve starověkých verzích byly jediné možnosti buď:

  1. otestujte existenci řádku před vydáním INSERT (nebo v dílčím dotazu);
  2. použít PL/SQL ke spuštění INSERT a zpracování jakékoli výsledné chyby DUP_VAL_ON_INDEX.


  1. Přepnutí oddílu na SQL Server (T-SQL)

  2. Je špatný návrh používat pole v databázi?

  3. Jak vytvořit databázi MySQL pomocí cPanel API

  4. Příklady MONTH() – MySQL