CREATE SEQUENCE¶
Erstellt eine neue Sequenz, die zur Generierung von fortlaufenden, eindeutigen Nummern verwendet werden kann.
Wichtig
Snowflake garantiert nicht, dass die Generierung von Sequenznummern ohne Lücken erfolgt. Die generierten Zahlen sind nicht unbedingt zusammenhängend.
Weitere Details dazu finden Sie unter Verwenden von Sequenzen.
- Siehe auch:
DROP SEQUENCE, ALTER SEQUENCE, SHOW SEQUENCES, DESCRIBE SEQUENCE
Syntax¶
Erforderliche Parameter¶
nameGibt den Bezeichner für die Sequenz an. Dieser muss für das Schema, in dem die Sequenz erstellt wird, eindeutig sein.
Darüber hinaus muss der Bezeichner mit einem Buchstaben beginnen und darf keine Leer- oder Sonderzeichen enthalten, es sei denn, die gesamte Bezeichnerzeichenfolge wird in doppelte Anführungszeichen gesetzt (z. B.
"My object"). Bei Bezeichnern, die in doppelte Anführungszeichen eingeschlossen sind, ist auch die Groß-/Kleinschreibung zu beachten.Weitere Informationen zu Bezeichnern finden Sie unter Anforderungen an Bezeichner.
Optionale Parameter¶
START [ WITH ] [ = ] initial_valueGibt den ersten Wert an, der von der Sequenz zurückgegeben wird. Unterstützte Werte sind alle Werte, die durch eine 64-Bit-Zweierkomplement-Ganzzahl (
-2^63bis2^63 - 1) dargestellt werden können.Standard:
1INCREMENT [ BY ] [ = ] sequence_intervalGibt das Schrittintervall der Sequenz an:
Für das positive Sequenzintervall
nwerden die nächstenn-1-Werte bei jedem Sequenzaufruf reserviert.Für das negative Sequenzintervall
-nwerden die nächstniedrigerenn-1-Werte bei jedem Sequenzaufruf reserviert.
Unterstützte Werte sind alle Nicht-Null-Werte, die durch eine 64-Bit-Zweierkomplement-Ganzzahl dargestellt werden können.
Standard:
1{ ORDER | NOORDER }Gibt an, ob die Werte in aufsteigender oder absteigender Sequenz generiert werden oder nicht.
ORDER gibt an, dass die Werte, die für eine Sequenz oder eine automatisch inkrementierte Spalte generiert werden, in aufsteigender Reihenfolge sind (oder, wenn das Intervall einen negativen Wert hat, in abnehmender Reihenfolge).
Wenn beispielsweise eine Sequenz oder eine automatisch inkrementierte Spalte die Werte
START 1 INCREMENT 2hat, könnten die generierten Werte1,3,5,7,9usw. sein.NOORDER gibt an, dass nicht garantiert ist, dass die Werte in aufsteigender Reihenfolge sind.
Wenn beispielsweise eine Sequenz die Werte
START 1 INCREMENT 2hat, könnten die generierten Werte1,3,101,5,103usw. sein.NOORDER kann die Leistung verbessern, wenn mehrere INSERT-Operationen gleichzeitig ausgeführt werden (z- B., wenn mehrere Clients mehrere INSERT-Anweisungen ausführen).
Standard: Der Parameter NOORDER_SEQUENCE_AS_DEFAULT bestimmt, welche Eigenschaft standardmäßig eingestellt wird.
COMMENT = 'string_literal'Gibt einen Kommentar zur Sequenz an.
Standard: Kein Wert
Anforderungen an die Zugriffssteuerung¶
Eine Rolle, die zur Ausführung dieser Operation verwendet wird, muss mindestens die folgenden Berechtigungen haben:
Berechtigung |
Objekt |
Anmerkungen |
|---|---|---|
CREATE SEQUENCE |
Schema |
Für das Ausführen von Operationen auf einem Objekt in einem Schema ist mindestens eine Berechtigung für die übergeordnete Datenbank und mindestens eine Berechtigung für das übergeordnete Schema erforderlich.
Eine Anleitung zum Erstellen einer kundenspezifischen Rolle mit einer bestimmten Gruppe von Berechtigungen finden Sie unter Erstellen von kundenspezifischen Rollen.
Allgemeine Informationen zu Rollen und Berechtigungen zur Durchführung von SQL-Aktionen auf sicherungsfähigen Objekten finden Sie unter Übersicht zur Zugriffssteuerung.
Nutzungshinweise¶
Der Anfangswert einer Sequenz kann nach dem Erstellen der Sequenz nicht mehr geändert werden.
Eine Sequenz erzeugt nicht unbedingt eine lückenlose Sequenz. Die Werte nehmen zu (bis das Limit erreicht ist) und sind eindeutig, aber nicht unbedingt zusammenhängend. Weitere Informationen, einschließlich der Ober- und Untergrenzen, finden Sie unter Semantik von Sequenzen.
Hinweis zu Metadaten:
Achtung
Kunden müssen sicherstellen, dass bei der Nutzung des Snowflake-Dienstes keine personenbezogenen Daten (außer für ein Objekt „User“), sensible Daten, exportkontrollierte Daten oder andere regulierte Daten als Metadaten eingegeben werden. Weitere Informationen dazu finden Sie unter Metadatenfelder in Snowflake.
Die Klauseln OR REPLACE und IF NOT EXISTS schließen sich gegenseitig aus. Sie können nicht beide in der gleichen Anweisung verwendet werden.
CREATE OR REPLACE <Objekt>-Anweisungen sind atomar. Das heißt, wenn ein Objekt ersetzt wird, erfolgt das Löschen des alten Objekts und das Erstellen des neuen Objekts in einer einzigen Transaktion.
Beispiele¶
Hier ist ein einfaches Beispiel für die Verwendung von Sequenzen:
Führen Sie dieselbe Abfrage erneut aus. Beachten Sie, wie sich die Sequenznummern ändern:
Verwenden Sie nun die Sequenz beim Einfügen in eine Tabelle:
Erstellen Sie eine Sequenz, die um 5 statt um 1 erhöht wird:
Führen Sie dieselbe Abfrage erneut aus. Beachten Sie, wie sich die Sequenznummern ändern. Sie könnten erwarten, dass der nächste Satz von Sequenznummern mit einer Nummer beginnt, die um 5 höher ist als die Nummer, mit der die vorherige Anweisung aufgehört hat. Die nächste Sequenznummer beginnt jedoch mit einer um 20 höheren Zahl (5 * 4, wobei 5 die Größe des Inkrements und 4 die Anzahl der
NEXTVAL-Operationen in der Anweisung ist):
Im folgenden Beispiel wird veranschaulicht, dass Sie eine Sequenz als Standardwert für eine Spalte verwenden können, um für jede Zeile einer Tabelle eindeutige Bezeichner bereitzustellen:
Diese Abfrage zeigt, dass jede Zeile in der Tabelle einen diskreten Wert hat:
Weitere Beispiele finden Sie unter Verwenden von Sequenzen.