Erstellen eines DB2-Sequenz mit einer spezifischen START-MIT Wert
In Oracle können wir es so machen:
declare current_max_value NUMBER;
begin select last_number+1 into current_max_value from USER_SEQUENCES where sequence_name = 'HIBERNATE_SEQUENCE';
execute immediate 'CREATE SEQUENCE SEQ__NEW_SEQUENCE MINVALUE 1 MAXVALUE 999999999999999999999999999 INCREMENT BY 1 START WITH '||current_max_value|| ' CACHE 20 NOORDER NOCYCLE';
Gibt es eine DB2-äquivalent?
Bitte markieren Sie die Antwort. Ich habe es lange zurück
InformationsquelleAutor Blake | 2010-09-01
Du musst angemeldet sein, um einen Kommentar abzugeben.
DB2 hat vaugely gleichwertigen Funktionen.
Wenn Sie brauchen nur zu generieren uninque Schlüssel, dann:-
Auf die create table-Anweisung wird dies erreichen ohne zu viel Aufhebens. Jedes mal, wenn ein null-Wert Auftritt, der auf eine insert -, eine neue Zahl generiert.
Wenn Sie eine tatsächliche Sequenznummer verwendet werden, die über mehrere Tabellen dann:
wird eine Reihenfolge festlegen, die Sie dann verwenden Sie die "NEXTVAL" keyword überall Sie wollen, dass die nächste Zahl in der Sie sql:
Sie können RTFM hier publib.boulder.ibm.com/infocenter/db2luw/v9//index.jsp . Blick auf die "identity-Optionen" - syntax finden Sie eine "BEGINNT MIT" - Klausel. Auch für Ihre Anforderungen für eine zusammenhängende Sequenz, die Sie benötigen, um die 'KEINE CAHCE' option aber bewusst sein, dass dies effectivly "single-thread" alle Aktualisierungen an der Tabelle.
wenn wir wüssten, wie wir sind dynamisch ausgeführten sql-Anweisungen in DB2-dann könnten wir dieses problem zu beheben
ich habe, wie einige es geschafft, zu wissen, die syntax und die gepostet haben, die unter Antwort, die die utilimate Weg, das zu tun....
InformationsquelleAutor James Anderson
Nachdem eine große Schwierigkeit, ich war in der Lage, um dies herauszufinden, mit DB2-syntax, und hier gehen wir
CREATE PROCEDURE SEQ_NAME
LANGUAGE SQL
DYNAMIC RESULT SETS 1
BEGIN ATOMIC
DECLARE MAX_VAL_NO INTEGER;
SELECT MAX(COL_NAME)+1 INTO MAX_VAL_NO FROM TABLE_NAME;
execute immediate 'CREATE SEQUENCE SEQ_NAME NO MAXVALUE NO CYCLE START WITH '|| MAX_VAL_NO;
END
GO
Kann mir einer sagen, warum sollten wir
LANGUAGE SQL
undDYNAMIC RESULT SETS 1
Und was ist die syntax, die hier verwendet werden, ehrlich gesagt habe ich nicht wirklich eine Idee, aber ich schlug es durch trial-and-error-Methode. Mit Spannung warten, um zu wissen, was ist der syntax ist es entweder die ANSI C oder einige andere.
Dankbar, wenn Sie mir diese beantworten. Auch einige links für gute Studie.(Nicht regelmäßige IBM links)
oh gr8 James das ist wirklich hilfreich. 🙂
InformationsquelleAutor Shiva Komuravelly