Når jeg kører dette, får jeg fejlen "missing INTO keyword" .
Fordi IGNORER ikke er et nøgleord i Oracle. Det er MySQL-syntaks.
Hvad du kan gøre, er at bruge FLOT.
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)
/
Fra Oracle 10g kan vi bruge merge uden at håndtere begge grene. I 9i skulle vi bruge en "dummy" MATCHED gren.
I mere gamle versioner var de eneste muligheder enten:
- test for rækkens eksistens, før du udsteder en INSERT (eller i en underforespørgsel);
- at bruge PL/SQL til at udføre INSERT og håndtere eventuelle resulterende DUP_VAL_ON_INDEX-fejl.