

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`
<a name="alter-sequence-syntax-support"></a>

`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`](create-sequence-syntax-support.md) Seite.  
Hinweise zur optimalen Verwendung von Sequenzen, die auf Workload-Mustern basieren, finden Sie unter[Arbeiten mit Sequenzen und Identitätsspalten](sequences-identity-columns-working-with.md).

## Unterstützte Syntax
<a name="alter-sequence-supported-syntax"></a>

```
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
<a name="alter-sequence-description"></a>

`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 besitzen`ALTER 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
<a name="alter-sequence-parameters"></a>

***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 BY increment` ist optional. Ein positiver Wert ergibt eine aufsteigende Reihenfolge, ein negativer Wert eine absteigende Sequenz. Falls nicht angegeben, wird der alte Inkrementwert beibehalten.

***minvalue* / `NO MINVALUE`**  
Die optionale Klausel `MINVALUE minvalue` bestimmt den Mindestwert, den eine Sequenz generieren kann. Wenn `NO MINVALUE` angegeben, 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 `MAXVALUE maxvalue` bestimmt den Maximalwert für die Sequenz. Falls `NO MAXVALUE` angegeben, 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 `CYCLE` Schlüsselwort kann verwendet werden, um zu ermöglichen, dass die Sequenz umgebrochen wird, wenn das *maxvalue* oder *minvalue* durch eine aufsteigende bzw. absteigende Sequenz erreicht wurde. Wenn das Limit erreicht ist, wird als nächste Zahl das *minvalue* Oder *maxvalue* generiert.

**`NO CYCLE`**  
Wenn das optionale `NO CYCLE` Schlüsselwort angegeben wird, geben alle Aufrufe von, `nextval` nachdem die Sequenz ihren Maximalwert erreicht hat, einen Fehler zurück. Wenn keines `CYCLE` oder beide angegeben `NO CYCLE` sind, wird das alte Zyklusverhalten beibehalten.

***start***  
Die optionale Klausel `START WITH start` ändert den aufgezeichneten Startwert der Sequenz. Dies hat keine Auswirkung auf den aktuellen Sequenzwert; es legt lediglich den Wert fest, den future `ALTER SEQUENCE RESTART` Befehle verwenden werden.

***restart***  
Die optionale Klausel `RESTART [ WITH restart ]` ändert den aktuellen Wert der Sequenz. Dies ist vergleichbar mit dem Aufrufen der `setval` Funktion mit `is_called` =`false`: Der angegebene Wert wird beim nächsten Aufruf von zurückgegeben`nextval`. Das Schreiben `RESTART` ohne *restart* Wert entspricht der Angabe des Startwerts, der von aufgezeichnet `CREATE SEQUENCE` oder zuletzt von gesetzt wurde`ALTER SEQUENCE START WITH`.  
Im Gegensatz zu einem `setval` Anruf ist eine `RESTART` Operation in einer Sequenz transaktionaler Natur und verhindert, dass gleichzeitige Transaktionen Zahlen aus derselben Sequenz abrufen. Wenn das nicht der gewünschte Betriebsmodus ist, `setval` sollte er verwendet werden.

***cache***  
Die Klausel `CACHE cache` ermö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 unter[`CREATE SEQUENCE`](create-sequence-syntax-support.md).

**`OWNED BY table_name.column_name` / `OWNED BY NONE`**  
Die `OWNED BY` Option 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 Angabe `OWNED BY NONE` wird jede bestehende Zuordnung entfernt, wodurch die Sequenz „eigenständig“ wird.

***new\$1owner***  
Der Benutzername des neuen Besitzers der Sequenz.

***new\$1name***  
Der neue Name für die Sequenz.

***new\$1schema***  
Das neue Schema für die Sequenz.

## Hinweise
<a name="alter-sequence-notes"></a>

`ALTER SEQUENCE`wirkt 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 SEQUENCE`hat keinen Einfluss auf den `currval` Status der Sequenz.

`ALTER SEQUENCE`kann dazu führen, dass andere Transaktionen zu OCC führen.

`ALTER TABLE`Kann aus historischen Gründen auch mit Sequenzen verwendet werden. Die einzigen Varianten`ALTER TABLE`, die bei Sequenzen zulässig sind, entsprechen den oben gezeigten Formen.

## Beispiele
<a name="alter-sequence-examples"></a>

Starten Sie eine Sequenz neu`serial`, die bei 105 aufgerufen wird:

```
ALTER SEQUENCE serial RESTART WITH 105;
```

## Kompatibilität
<a name="alter-sequence-compatibility"></a>

`ALTER SEQUENCE`entspricht dem SQL-Standard, mit Ausnahme der `SET SCHEMA` Klauseln,`AS`,,`START WITH`, und `OWNED BY` `OWNER TO``RENAME TO`, bei denen es sich um PostgreSQL-Erweiterungen handelt.