Anmelden

View Full Version : SQL Auto Increment



Seiten : 1 2 3 [4]

kitvb1
29-01-10, 10:01
...

...
exec sql set option commit=*none;
...
SET OPTION muss der erste Befehl sein den Du ausführst.

andreaspr@aon.at
29-01-10, 10:08
SET OPTION muss der erste SQL-BEFEHL sein der ausgeführt werden muss, und das ist in dem vorherigen beispiel der fall.

B.Hauser
29-01-10, 10:20
Korrektur:


SET OPTION muss der erste Befehl sein den Du ausführst.

SET OPTION wird überhaupt nicht ausgeführt!
SET OPTION sind Compiler-Anweisungen und müssen deshalb (so ist halt der SQL-PreCompiler implementiert) physisch in der Quelle vor allen anderen SQL-Statements stehen!

Würde SET OPTION in der *INZSR stehen, die am Ende der Quelle steht und alle anderen SQL Statements wären im Hauptprogramm, gäbe es (oder zumindest gab es) einen Compile Fehler.

Ich muss mal wieder prüfen, ob es inzwischen nicht ein PTF gibt, das auch eine Definition an einer anderen Stelle zulässt.

Birgitta

Kurmas Zeschlon
04-02-10, 14:37
Danke für die Tipps! Ich habe es nun wie in Birgittas Beispiel versucht.



Das Statement sollte funktionieren, wenn Du die Union-Anweisung als Sub-Select definierst.

Etwa so:

insert into LastTable (DNr, Dlabel, DName)
(Select Next Value for Seq_Zaehler, x.*
From (Select FldLabel, FldName from MyTable
Union All
Select XYZLabel, XYZName from NextTable) xBirgitta

Das einzige Problem, das ich noch hatte, war, dass die Sequenz bei jedem Programmaufruf wieder bei 1 anfangen soll.

Das habe ich nun so gelöst:

exec sql drop sequence seq_zaehler;
exec sql create sequence seq_zaehler start with 1 increment by 1 no maxvalue order;Es funktioniert, aber ist es auch eine gute Idee?

Nochmals vielen Dank an euch!
Markus

Fuerchau
04-02-10, 14:45
Einfacher gehts mit


ALTER SEQUENCE MySequence RESTART