oracle einfügen wenn Zeile nicht existiert
insert ignore into table1
select 'value1',value2
from table2
where table2.type = 'ok'
Wenn ich diesen starte, bekomme ich die Fehlermeldung "missing IN keyword" .
Irgendwelche Ideen ?
InformationsquelleAutor der Frage coder247 | 2010-06-30
Du musst angemeldet sein, um einen Kommentar abzugeben.
Weil IGNORIEREN ist nicht ein Schlüsselwort in Oracle. Das ist MySQL-syntax.
Was man tun kann, ist MERGE.
Ab Oracle 10g können wir nutzen Zusammenführen, ohne die Behandlung beider Zweige. In 9i hatten wir mit einem "dummy" ABGESTIMMT Zweig.
In älteren Versionen nur die Optionen waren entweder :
InformationsquelleAutor der Antwort APC
Weil Sie tippte die falsche Wort "ignorieren" zwischen "einfügen" und "in"!!
Werden sollte:
Ihre Frage-Titel "oracle einfügen wenn Zeile nicht existiert" ich nehme an, Sie dachte, "ignorieren" wurde eine Oracle-Schlüsselwort, das bedeutet "versuchen Sie nicht, eine Zeile einfügen, wenn Sie bereits vorhanden ist". Vielleicht funktioniert dies in einigen anderen DBMS, aber nicht in Oracle. Sie könnten die Verwendung einer MERGE-Anweisung, oder überprüfen Sie für die Existenz wie diese:
InformationsquelleAutor der Antwort Tony Andrews
Beachten Sie, dass wenn Sie Glück genug, um die Arbeit mit der version 11g Release 2 können Sie das Hinweis - IGNORE_ROW_ON_DUPKEY_INDEX.
Aus der Dokumentation:
http://download.oracle.com/docs/cd/E11882_01/server.112/e10592/sql_elements006.htm#CHDEGDDG
Einem Beispiel aus meinem blog:
http://rwijk.blogspot.com/2009/10/three-new-hints.html
Grüße,
Rob.
InformationsquelleAutor der Antwort Rob van Wijk