Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.
ALTER SEQUENCE
ALTER SEQUENCE— die Definition eines Sequenzgenerators ändern.
Wichtig
Bei der Verwendung von Sequenzen sollte der Cache-Wert sorgfältig abgewogen werden. Weitere Informationen finden Sie im Callout „Wichtig“ auf der CREATE SEQUENCE Seite.
Hinweise zur optimalen Verwendung von Sequenzen, die auf Workload-Mustern basieren, finden Sie unterArbeiten mit Sequenzen und Identitätsspalten.
Unterstützte Syntax
ALTER SEQUENCE [ IF EXISTS ] name [ INCREMENT [ BY ] increment ] [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ] [ [ NO ] CYCLE ] [ START [ WITH ] start ] [ RESTART [ [ WITH ] restart ] ] [ CACHE cache ] [ OWNED BY { table_name.column_name | NONE } ] ALTER SEQUENCE [ IF EXISTS ] name OWNER TO { new_owner | CURRENT_ROLE | CURRENT_USER | SESSION_USER } ALTER SEQUENCE [ IF EXISTS ] name RENAME TO new_name ALTER SEQUENCE [ IF EXISTS ] name SET SCHEMA new_schema where cache is 1 or cache >= 65536
Description
ALTER SEQUENCEändert die Parameter eines vorhandenen Sequenzgenerators. Alle Parameter, die nicht ausdrücklich im ALTER SEQUENCE Befehl festgelegt wurden, behalten ihre vorherigen Einstellungen bei.
Sie müssen die zu verwendende Sequenz besitzenALTER SEQUENCE. Um das Schema einer Sequenz zu ändern, müssen Sie auch über CREATE Berechtigungen für das neue Schema verfügen. Um den Besitzer zu ändern, müssen Sie in der Lage sein, SET ROLE auf die neue Eigentümerrolle zuzugreifen, und diese Rolle muss über CREATE Berechtigungen für das Schema der Sequenz verfügen. (Diese Einschränkungen legen fest, dass das Ändern des Besitzers nichts bewirkt, was Sie nicht tun könnten, indem Sie die Sequenz löschen und neu erstellen. Ein Superuser kann jedoch trotzdem den Besitz einer beliebigen Sequenz ändern.)
Parameters
name-
Der Name (optional schemaqualifiziert) einer Sequenz, die geändert werden soll.
IF EXISTS-
Geben Sie keinen Fehler aus, wenn die Sequenz nicht existiert. In diesem Fall wird eine Mitteilung ausgegeben.
increment-
Die Klausel
INCREMENT BYist optional. Ein positiver Wert ergibt eine aufsteigende Reihenfolge, ein negativer Wert eine absteigende Sequenz. Falls nicht angegeben, wird der alte Inkrementwert beibehalten.increment minvalue/NO MINVALUE-
Die optionale Klausel
MINVALUEbestimmt den Mindestwert, den eine Sequenz generieren kann. WennminvalueNO MINVALUEangegeben, werden die Standardwerte 1 und der Mindestwert des Datentyps für aufsteigende bzw. absteigende Sequenzen verwendet. Wenn keine der Optionen angegeben ist, wird der aktuelle Mindestwert beibehalten. maxvalue/NO MAXVALUE-
Die optionale Klausel
MAXVALUEbestimmt den Maximalwert für die Sequenz. FallsmaxvalueNO MAXVALUEangegeben, werden die Standardwerte des Maximalwerts des Datentyps und -1 für aufsteigende bzw. absteigende Sequenzen verwendet. Wenn keine der Optionen angegeben ist, wird der aktuelle Maximalwert beibehalten. CYCLE-
Das optionale
CYCLESchlüsselwort kann verwendet werden, um zu ermöglichen, dass die Sequenz umgebrochen wird, wenn dasmaxvalueoderminvaluedurch eine aufsteigende bzw. absteigende Sequenz erreicht wurde. Wenn das Limit erreicht ist, wird als nächste Zahl dasminvalueOdermaxvaluegeneriert. NO CYCLE-
Wenn das optionale
NO CYCLESchlüsselwort angegeben wird, geben alle Aufrufe von,nextvalnachdem die Sequenz ihren Maximalwert erreicht hat, einen Fehler zurück. Wenn keinesCYCLEoder beide angegebenNO CYCLEsind, wird das alte Zyklusverhalten beibehalten. start-
Die optionale Klausel
START WITHändert den aufgezeichneten Startwert der Sequenz. Dies hat keine Auswirkung auf den aktuellen Sequenzwert; es legt lediglich den Wert fest, den futurestartALTER SEQUENCE RESTARTBefehle verwenden werden. restart-
Die optionale Klausel
RESTART [ WITHändert den aktuellen Wert der Sequenz. Dies ist vergleichbar mit dem Aufrufen derrestart]setvalFunktion mitis_called=false: Der angegebene Wert wird beim nächsten Aufruf von zurückgegebennextval. Das SchreibenRESTARTohnerestartWert entspricht der Angabe des Startwerts, der von aufgezeichnetCREATE SEQUENCEoder zuletzt von gesetzt wurdeALTER SEQUENCE START WITH.Im Gegensatz zu einem
setvalAnruf ist eineRESTARTOperation in einer Sequenz transaktionaler Natur und verhindert, dass gleichzeitige Transaktionen Zahlen aus derselben Sequenz abrufen. Wenn das nicht der gewünschte Betriebsmodus ist,setvalsollte er verwendet werden. cache-
Die Klausel
CACHEermöglicht es, Sequenznummern vorab zuzuweisen und für einen schnelleren Zugriff im Speicher zu speichern. Der Wert muss entweder 1 oder ein Wert >= 65536 sein. Wenn nicht angegeben, wird der alte Cache-Wert beibehalten. Weitere Informationen zum Verhalten von Caches finden Sie in den Anleitungen unterCREATE SEQUENCE.cache OWNED BY/table_name.column_nameOWNED BY NONE-
Die
OWNED BYOption bewirkt, dass die Sequenz einer bestimmten Tabellenspalte zugeordnet wird. Wenn also diese Spalte (oder ihre gesamte Tabelle) gelöscht wird, wird auch die Sequenz automatisch gelöscht. Falls angegeben, ersetzt diese Zuordnung alle zuvor angegebenen Verknüpfungen für die Sequenz. Die angegebene Tabelle muss denselben Besitzer haben und sich im selben Schema wie die Sequenz befinden. Durch die AngabeOWNED BY NONEwird jede bestehende Zuordnung entfernt, wodurch die Sequenz „eigenständig“ wird. new_owner-
Der Benutzername des neuen Besitzers der Sequenz.
new_name-
Der neue Name für die Sequenz.
new_schema-
Das neue Schema für die Sequenz.
Hinweise
ALTER SEQUENCEwirkt sich nicht sofort auf nextval Ergebnisse in anderen Backends als dem aktuellen aus, denen Sequenzwerte vorab zugewiesen (zwischengespeichert) sind. Sie werden alle zwischengespeicherten Werte verbrauchen, bevor sie die geänderten Parameter für die Sequenzgenerierung bemerken. Das aktuelle Backend wird sofort betroffen sein.
ALTER SEQUENCEhat keinen Einfluss auf den currval Status der Sequenz.
ALTER SEQUENCEkann dazu führen, dass andere Transaktionen zu OCC führen.
ALTER TABLEKann aus historischen Gründen auch mit Sequenzen verwendet werden. Die einzigen VariantenALTER TABLE, die bei Sequenzen zulässig sind, entsprechen den oben gezeigten Formen.
Beispiele
Starten Sie eine Sequenz neuserial, die bei 105 aufgerufen wird:
ALTER SEQUENCE serial RESTART WITH 105;
Kompatibilität
ALTER SEQUENCEentspricht dem SQL-Standard, mit Ausnahme der SET SCHEMA Klauseln,AS,,START WITH, und OWNED BY OWNER TORENAME
TO, bei denen es sich um PostgreSQL-Erweiterungen handelt.