Lorsque je lance ceci, j'obtiens l'erreur "mot clé INTO manquant".
Parce que IGNORE n'est pas un mot-clé dans Oracle. C'est la syntaxe MySQL.
Ce que vous pouvez faire, c'est utiliser 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)
/
À partir d'Oracle 10g, nous pouvons utiliser la fusion sans gérer les deux branches. Dans 9i, nous devions utiliser une branche MATCHED "factice".
Dans les versions plus anciennes, les seules options étaient soit :
- tester l'existence de la ligne avant d'émettre un INSERT (ou dans une sous-requête) ;
- pour utiliser PL/SQL pour exécuter l'INSERT et gérer toute erreur DUP_VAL_ON_INDEX résultante.