Oracle Database
Sequenzen
Suche…
Syntax
- SEQUENCE SCHEMA.SEQUENCE erstellen START MIT INTEGER | MAXVALUE INTEGER | NOMAXVALUE INTEGER | MINVALUE INTEGER | NOMINVALUE INTEGER | CYCLE INTEGER | NOCYCLE INTEGER | CACHE | NOCACHE | BESTELLUNG | NOODER}
Parameter
Parameter | Einzelheiten |
---|---|
Schema | Schemaname |
inkrementieren um | Intervall zwischen den Zahlen |
beginnen mit | erste Nummer benötigt |
Maximalwert | Maximalwert für die Sequenz |
Nomaxwert | Maximalwert ist voreingestellt |
Minwert | Mindestwert für die Sequenz |
Nennwert | Mindestwert ist voreingestellt |
Zyklus | Nach Erreichen dieses Wertes auf den Start zurücksetzen |
nocycle | Standard |
Zwischenspeicher | Vorbelegungsgrenze |
Nocache | Standard |
Auftrag | Garantiere die Reihenfolge der Zahlen |
keine Bestellung | Standard |
Sequenz erstellen: Beispiel
Zweck
Verwenden Sie die Anweisung CREATE SEQUENCE, um eine Sequenz zu erstellen, bei der es sich um ein Datenbankobjekt handelt, aus dem mehrere Benutzer eindeutige Ganzzahlen generieren können. Sie können Sequenzen verwenden, um automatisch Primärschlüsselwerte zu generieren.
Wenn eine Sequenznummer generiert wird, wird die Sequenz unabhängig von der Transaktion erhöht oder rückgängig gemacht. Wenn zwei Benutzer gleichzeitig dieselbe Sequenz inkrementieren, können die Sequenznummern, die jeder Benutzer erhält, Lücken aufweisen, da Sequenznummern vom anderen Benutzer generiert werden. Ein Benutzer kann niemals die von einem anderen Benutzer generierte Sequenznummer erhalten. Nachdem ein Sequenzwert von einem Benutzer generiert wurde, kann dieser Benutzer weiterhin auf diesen Wert zugreifen, unabhängig davon, ob die Sequenz von einem anderen Benutzer inkrementiert wird.
Sequenznummern werden unabhängig von Tabellen generiert, sodass dieselbe Sequenz für eine oder für mehrere Tabellen verwendet werden kann. Es kann vorkommen, dass einzelne Sequenznummern übersprungen werden, da sie in einer Transaktion generiert und verwendet wurden, die letztendlich zurückgesetzt wurde. Darüber hinaus erkennt ein einzelner Benutzer möglicherweise nicht, dass andere Benutzer aus derselben Sequenz zeichnen.
Nachdem eine Sequenz erstellt wurde, können Sie auf deren Werte in SQL-Anweisungen mit der CURRVAL-Pseudospalte zugreifen, die den aktuellen Wert der Sequenz zurückgibt, oder der NEXTVAL-Pseudospalte, die die Sequenz erhöht und den neuen Wert zurückgibt.
Voraussetzungen
Um eine Sequenz in Ihrem eigenen Schema zu erstellen, müssen Sie über das CREATE SEQUENCE-Systemprivileg verfügen.
Um eine Sequenz im Schema eines anderen Benutzers zu erstellen, müssen Sie über das Systemprivileg CREATE ANY SEQUENCE verfügen.
Erstellen einer Sequenz: Beispiel Die folgende Anweisung erstellt die Sequenz customers_seq im Beispielschema oe. Diese Reihenfolge kann verwendet werden, um Kunden-ID-Nummern anzugeben, wenn der Kundentabelle Zeilen hinzugefügt werden.
CREATE SEQUENCE customers_seq
START WITH 1000
INCREMENT BY 1
NOCACHE
NOCYCLE;
Die erste Referenz auf customers_seq.nextval gibt 1000 zurück. Die zweite Referenz gibt 1001 zurück. Jede nachfolgende Referenz gibt einen Wert zurück, der um 1 größer ist als die vorherige.