SQL > SQL Befehle > SEQUENCE und NEXTVAL 

Oracle verwendet das Konzept der SEQUENCE (Sequenz), um numerische Primärschlüsselwerte zu erstellen, wenn wir Datensätze in eine Tabelle einfügen. Während die Bevölkerung numerischer Primärschlüssel für MySQL und SQL Server an individuelle Tabellen gebunden ist, wird in Oracle die SEQUENCE-Konstruktion separat erstellt und ist nicht an eine bestimmte Tabelle gebunden.

Syntax

Die Syntax für die Erstellung einer Sequenz in Oracle lautet:

CREATE SEQUENCE SEQUENCE_NAME
[START WITH {Initial_Value}]
[INCREMENT BY {interval}];

{Initial_Value} ist der Startwert der Sequenz, und {interval} ist das Intervall zwischen aufeinanderfolgenden Sequenznummern. Sowohl [START WITH] als auch [INCREMENT BY] sind optionale Felder. Wenn sie nicht angegeben werden, sind der Standardwert für {Initial_Value} und {interval} beide 1.

Beispiel

Angenommen, wir haben eine Tabelle mit folgender Struktur:

Tabelle USER_TABLE

 Spalten Name  Datentyp 
 Userid  integer 
 Last_Name  varchar(50) 
 First_Name  varchar(50) 

und wir möchten die folgende Sequenz verwenden, um die Benutzer-ID zu generieren:

CREATE SEQUENCE SEQ_USER START WITH 5 INCREMENT BY 5;

Wir geben an, dass wir die Sequenz und die NEXTVAL-Funktion in den INSERT INTO-Anweisungen in der folgenden Reihenfolge verwenden möchten:

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Washington', 'George');

INSERT INTO USER_TABLE VALUES (SEQ_USER.NEXTVAL, 'Jefferson', 'Thomas');

Jetzt hat die Tabelle die folgenden beiden Zeilen:

Tabelle USER_TABLE

 Userid  Last_Name  First_Name 
 5  Washington  George 
 10  Jefferson  Thomas 

Es ist erwähnenswert, dass eine Sequenz unabhängig von einer Tabelle ist. Mit anderen Worten, eine Sequenz kann verwendet werden, um Primärschlüsselwerte für mehrere Tabellen zu generieren, und die Sequenz setzt sich fort, auch wenn sie auf eine andere Tabelle angewendet wird. Angenommen, wir haben zum Beispiel eine zweite Tabelle namens NEW_USERS, die die gleiche Struktur wie die Tabelle USER_TABLE hat, und wir geben den folgenden SQL-Befehl aus, nachdem wir die beiden oben genannten SQL-Befehle ausgeführt haben:

INSERT INTO NEW_USER VALUES (SEQ_USER.NEXTVAL, 'Adams', 'John');

Die Tabelle NEW_USER wird die folgende Zeile haben:

Tabelle NEW_USER

 Userid  Last_Name  First_Name 
 15  Adams  John 

Die Benutzer-ID ist 15, weil das der nächste Wert nach 10 ist. 

SQL Kaskadieren >>

Diese Seite wurde zuletzt am 26.12.2023 aktualisiert




Copyright © 2024   1keydata.com   Alle Rechte vorbehalten