Mit Hilfe der DEFAULT-Spezifikation SERIAL(n) können Sie einen Nummerngenerator (automatisch generierte Abfolge von Zahlen) für eine Spalte einer Tabelle erzeugen.
Eine typische Anwendung ist die Erzeugung eines Primärschlüssels.
Sie benötigen die Demo-Daten für das SQL-Tutorial.
Starten Sie das Query Tool SQL Studio als Datenbankadministrator MONA mit dem Kennwort RED und melden Sie sich an die Demo-Datenbankinstanz DEMODB an.
...
Legen Sie die Tabelle pers3 mit der DEFAULT-Spezifikation SERIAL(n) an.
Bei Verwenden des Schlüsselworts SERIAL ohne Angabe einer Zahl ist der Vorschlagswert für den Start des Nummerngenerators die Zahl 1. Wollen Sie den Nummerngenerator mit der Zahl n starten, müssen Sie die Zahl n explizit nach dem Schlüsselwort SERIAL angeben: SERIAL(n).
CREATE TABLE hotel.pers3
(pno FIXED(10) DEFAULT SERIAL PRIMARY KEY,
name CHAR (20))
oder
CREATE TABLE hotel.pers3
(pno SERIAL PRIMARY KEY,
name CHAR (20))
Da der Datentyp SERIAL auf FIXED(10) DEFAULT SERIAL abgebildet wird, liefern beide CREATE TABLE-Anweisungen die gleiche Definition der Tabelle pers3. Als erster Wert des Nummerngenerators wird die Zahl 1 erzeugt.
Siehe auch:
SQL-Referenzhandbuch, DEFAULT-Spezifikation
(default_spec)
SQL-Referenzhandbuch, Datentyp
(data_type)
Sie können den Nummerngenerator in der Spalte pno in Ihrer Anwendung verwenden.
In INSERT-Anweisungen müssen Sie für die SERIAL-Spalte keinen Wert angeben, da dieser durch den impliziten Nummerngenerator erzeugt wird.
Der erste Wert des Nummergenerators in dem oben genannten Beispiel ist eine 1. Mit jedem weiteren Einfügen eines Wertes in die Tabelle wird der Wert der SERIAL-Spalte um 1 erhöht.
INSERT hotel.pers3
(name) VALUES ('Baker')
//
INSERT hotel.pers3 (name) VALUES ('Miller')
//
SELECT * FROM hotel.pers3
Ergebnis
PNO |
NAME |
1 |
Baker |
2 |
Miller |
Eine Spalte mit der DEFAULT-Spezifikation SERIAL kann nicht geändert werden.
Eine Spalte mit der DEFAULT-Spezifikation SERIAL kann auch Fremdschlüsselspalte sein. Eine solche Spalte eignet sich sogar hervorrragend für diese Zwecke, da die Werte nicht geändert werden können und in den Anwendungen nur für die Zwecke genutzt werden, die durch die auf der Spalte liegende Anwendungslogik vorgegeben sind.
Zur Anzeige des gerade verwendeten Wertes des Nummerngenerator können Sie die automatisch durch das Datenbanksystem erzeugte Tabelle DUAL verwenden. Die Tabelle DUAL kann durch alle Datenbankbenutzer verwendet werden. Da die Tabelle DUAL nur eine Zeile hat, können Sie diese Tabelle dazu verwenden, den Wert des Nummerngenerators mit Hilfe einer SELECT-Anweisung anzeigen zu lassen.
Der aktuelle Wert des Nummerngenerators kann durch <table_name>.CURRVAL erfragt werden, wobei <table_name> der Name der Tabelle ist, die die DEFAULT-Spezifikation SERIAL enthält.
SELECT hotel.pers3.CURRVAL FROM dual
Ergebnis
|
EXPRESSION1 |
1 |
2 |
Siehe auch:
Nummerngeneratoren für Tabellen
Weitere Beispiele zur Datendefinition