Cuando ejecuto esto, aparece el error "falta la palabra clave INTO".
Porque IGNORE no es una palabra clave en Oracle. Esa es la sintaxis de MySQL.
Lo que puedes hacer es 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)
/
Desde Oracle 10g podemos usar merge sin manejar ambas ramas. En 9i tuvimos que usar una rama MATCHED "ficticia".
En versiones más antiguas, las únicas opciones eran:
- probar la existencia de la fila antes de emitir un INSERT (o en una subconsulta);
- para usar PL/SQL para ejecutar INSERT y manejar cualquier error DUP_VAL_ON_INDEX resultante.