När jag kör detta får jag felmeddelandet "missing INTO keyword" .
Eftersom IGNORE inte är ett nyckelord i Oracle. Det är MySQL-syntaxen.
Vad du kan göra är att använda 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)
/
Från Oracle 10g kan vi använda merge utan att hantera båda grenarna. I 9i var vi tvungna att använda en "dummy" MATCHED gren.
I äldre versioner var de enda alternativen antingen :
- testa för radens existens innan du utfärdar en INSERT (eller i en underfråga);
- att använda PL/SQL för att köra INSERT och hantera eventuella DUP_VAL_ON_INDEX-fel.