Wie kann ich mehrere Zeilen in oracle mit einem Sequenzwert einfügen?
Ich weiß, dass ich mehrere Zeilen einfügen mit Hilfe einer einzigen Anweisung, wenn ich die syntax in diese Antwort.
Jedoch einer der Werte die ich einfügen aus einer Sequenz, d.h.
insert into TABLE_NAME
(COL1,COL2)
select MY_SEQ.nextval,'some value' from dual
union all
select MY_SEQ.nextval,'another value' from dual
;
Wenn ich versuche es zu starten, bekomme ich ORA-02287-Fehler. Gibt es eine Möglichkeit, das zu umgehen, oder sollte ich einfach eine Menge von INSERT-Anweisungen?
EDIT:
Wenn ich die Angabe von Spaltennamen für alle anderen Spalten sind andere als die Sequenz, verliere ich die ursprüngliche Kürze, so ist es einfach nicht Wert. In diesem Fall werde ich einfach mehrere INSERT-Anweisungen.
Kommentar zu dem Problem
Siehe auch stackoverflow.com/questions/8292199/..., wenn Sie hier ankam, und nur wollen, wählen Sie mehrere verschiedene einzigartige sequence nextval in der gleichen Abfrage...
InformationsquelleAutor der Frage Ovesh | 2008-10-23
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies funktioniert:
InformationsquelleAutor der Antwort WW.
Es funktioniert nicht, weil die Sequenz funktioniert nicht in den folgenden Szenarien:
Quelle: http://www.orafaq.com/wiki/ORA-02287
Jedoch das funktioniert:
Probieren Sie es aus:
InformationsquelleAutor der Antwort Dilshod Tadjibaev
Ich denke, dass ist das, was Sie wollen, aber ich don ' T haben Zugang zu oracle-testen Sie es jetzt.
InformationsquelleAutor der Antwort EvilTeach
Vom Oracle Wiki, Fehler 02287 ist
Orte, an denen Sequenzen nicht verwendet werden, Sie scheinen es zu versuchen:
So dass es scheint, Sie können nicht tun, ein Vielfaches in der gleichen Anweisung.
Die Lösung, die Sie anbieten ist:
InformationsquelleAutor der Antwort billjamesdev
Eine Möglichkeit ist, erstellen Sie einen trigger für einfügen, um in die richtige Sequenz-Nummer.
InformationsquelleAutor der Antwort Brian Schmitt
diese funktioniert und es gibt keine Notwendigkeit, verwenden Sie union all.
InformationsquelleAutor der Antwort Mordred