Verwendet für
Den nächsten Wert einer Sequenz setzen oder deren Inkrement ändern
Syntax
ALTER {SEQUENCE | GENERATOR} seq_name
[RESTART [WITH newvalue]]
[INCREMENT [BY] increment]
Table 1. ALTER SEQUENCE
-Anweisungsparameter
Parameter |
Beschreibung |
seq_name |
Name der Sequenz (Generator) |
newvalue |
Neuer Sequenz-(Generator-)Wert.Eine 64-Bit-Ganzzahl von -2-63 bis 263-1. |
increment |
Erhöhen der Sequenz (bei Verwendung von NEXT VALUE FOR seq_name );kann nicht 0 sein. |
Die ALTER SEQUENCE
-Anweisung setzt den aktuellen Wert einer Sequenz oder eines Generators auf den angegebenen Wertund/oder ändert das Inkrement der Sequenz.
Mit der RESTART WITH newvalue
-Klausel können Sie den nächsten von NEXT VALUE FOR seq_name
generierten Wert setzen.Um dies zu erreichen, wird der aktuelle Wert der Sequenz entweder wie in der Anweisung angegeben auf (newvalue - increment
) mit increment gesetzt oder in den Metadaten der Sequenz gespeichert.Die RESTART
-Klausel (ohne WITH
) startet die Sequenz mit dem in den Metadaten der Sequenz gespeicherten Anfangswert neu.
Note
|
Im Gegensatz zu Firebird 3.0 startet in Firebird 4.0 RESTART WITH newvalue die Sequenz nur mit dem angegebenen Wert neu und speichert newvalue nicht als neuen Anfangswert der Sequenz.Ein nachfolgender ALTER SEQUENCE RESTART verwendet den Anfangswert, der beim Erstellen der Sequenz angegeben wurde, und nicht den newvalue dieser Anweisung.Dieses Verhalten ist im SQL-Standard spezifiziert.
Es ist derzeit nicht möglich, den in den Metadaten gespeicherten Initialwert zu ändern.
|
Warning
|
Eine falsche Verwendung der ALTER SEQUENCE -Anweisung (Änderung des aktuellen Wertes der Sequenz oder des Generators) kann die logische Integrität der Daten verletzen oder zu Verletzungen von Primärschlüssel- oder Unique-Constraints führen.
|
Mit INCREMENT [BY]
können Sie das Sequenzinkrement für den NEXT VALUE FOR
-Ausdruck ändern.
Note
|
Das Ändern des Inkrementwerts wird für alle Abfragen wirksam, die nach dem Festschreiben der Transaktion ausgeführt werden.Prozeduren, die zum ersten Mal nach dem Ändern des Commits aufgerufen werden, verwenden den neuen Wert, wenn sie NEXT VALUE FOR verwenden.Prozeduren, die bereits verwendet (und im Metadaten-Cache zwischengespeichert wurden) verwenden weiterhin das alte Inkrement.Möglicherweise müssen Sie alle Verbindungen zur Datenbank schließen, damit der Metadatencache gelöscht und das neue Inkrement verwendet werden kann.Prozeduren, die NEXT VALUE FOR verwenden, müssen nicht neu kompiliert werden, um das neue Inkrement zu sehen.Prozeduren, die GEN_ID(gen, expression) verwenden, sind nicht betroffen, wenn das Inkrement geändert wird.
|