Quando executo isso, recebo o erro "missing INTO keyword" .
Porque IGNORE não é uma palavra-chave no Oracle. Essa é a sintaxe do MySQL.
O que você pode fazer é usar 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)
/
A partir do Oracle 10g podemos usar o merge sem manipular os dois branches. No 9i tivemos que usar um branch MATCHED "dummy".
Em versões mais antigas, as únicas opções eram:
- teste a existência da linha antes de emitir um INSERT (ou em uma subconsulta);
- para usar PL/SQL para executar o INSERT e manipular qualquer erro DUP_VAL_ON_INDEX resultante.