sql >> Database >  >> RDS >> Oracle

Oracle invoegen als rij niet bestaat

Als ik dit uitvoer krijg ik de foutmelding "ontbrekend INTO trefwoord".

Omdat IGNORE geen sleutelwoord is in Oracle. Dat is de MySQL-syntaxis.

Wat u wel kunt doen, is MERGE gebruiken.

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)
/

Vanaf Oracle 10g kunnen we merge gebruiken zonder beide branches te gebruiken. In 9i moesten we een "dummy" MATCHED branch gebruiken.

In oudere versies waren de enige opties:

  1. test het bestaan ​​van de rij voordat u een INSERT geeft (of in een subquery);
  2. om PL/SQL te gebruiken om de INSERT uit te voeren en eventuele resulterende DUP_VAL_ON_INDEX-fouten af ​​te handelen.


  1. NOW() Voorbeelden – MySQL

  2. PHP &MySQL:mysqli_num_rows() verwacht dat parameter 1 mysqli_result is, boolean gegeven

  3. Een tabelafhankelijkheidsgrafiek maken met een recursieve query

  4. Gehumaniseerde of natuurlijke nummersortering van gemengde woord-en-nummerreeksen