ALTER SEQUENCE
ALTER SEQUENCE — Modifier la définition d'un générateur de
séquence
Synopsis
ALTER SEQUENCE nom [ INCREMENT [ BY ] increment ]
[ MINVALUE valeurmin | NO MINVALUE ] [ MAXVALUE valeurmax | NO MAXVALUE ]
[ RESTART [ WITH ] debut ] [ CACHE cache ] [ [ NO ] CYCLE ]
[ OWNED BY { table.colonne | NONE } ]
ALTER SEQUENCE nom SET SCHEMA nouveau_schema
Description
ALTER SEQUENCE
modifie les paramètres d'un générateur de séquence. Tout paramètre
non précisé dans la commande
ALTER
SEQUENCE
conserve sa valeur précédente.
Seul le propriétaire de la séquence peut utiliser
ALTER SEQUENCE
. Pour modifier le
schéma de la séquence, il faut posséder le droit CREATE sur le nouveau schéma.
Paramètres
-
nom
-
Le nom de la séquence à modifier (éventuellement qualifié du
nom du schéma).
-
increment
-
La clause INCREMENT BY
increment
est optionnelle.
Une valeur positive crée une séquence croissante, une valeur
négative une séquence décroissante. Lorsque cette clause
n'est pas spécifiée, la valeur de l'ancien incrément est
conservée.
-
valeurmin
,
NO MINVALUE
-
La clause optionnelle MINVALUE
valeurmin
, détermine la
valeur minimale de la séquence. Si NO
MINVALUE est utilisé, les valeurs par défaut, 1 et
-263-1 sont utilisées respectivement pour les
séquences croissantes et decroissantes. Si aucune option
n'est précisée, la valeur minimale courante est conservée.
-
valeurmax
,
NO MAXVALUE
-
La clause optionnelle MAXVALUE
valeurmax
détermine la
valeur maximale de la séquence. Si NO
MAXVALUE est utilisé, les valeurs par défaut
263-1 et -1 sont utilisées respectivement pour les
séquences croissantes et décroissantes. Si aucune option
n'est précisée, la valeur maximale courante est conservée.
-
debut
-
La clause optionnelle RESTART WITH
start
modifie la
valeur courante de la séquence.
-
cache
-
La clause CACHE
cache
active la
préallocation des numéros de séquences et leur stockage en
mémoire pour en accélerer l'accès. 1 est la valeur minimale
(une seule valeur est engendrée à la fois, soit pas de
cache). Lorsque la clause n'est pas spécifiée, l'ancienne
valeur est conservée.
-
CYCLE
-
Le mot clé optionnel CYCLE est
utilisé pour autoriser la séquence à boucler lorsque
valeurmax
ou
valeurmin
est atteint par,
respectivement, une séquence croissante ou décroissante.
Lorsque la limite est atteinte, le prochain numéro engendré
est, respectivement,
valeurmin
ou
valeurmax
.
-
NO CYCLE
-
Si le mot clé optionnel NO CYCLE est
spécifié, tout appel à nextval
alors que la séquence a atteint sa valeur maximale, dans le
cas d'une séquence croissante, ou sa valeur minimale dans le
cas contraire, retourne une erreur. Lorsque ni CYCLE ni NO CYCLE ne
sont spécifiés, l'ancien comportement est préservé.
-
OWNED BY
table
.
colonne
,
OWNED BY NONE
-
L'option OWNED BY permet d'associer
la séquence à une colonne spécifique d'une table pour que
cette séquence soit supprimée automatiquement si la colonne
(ou la table complète) est supprimée. Si cette option est
spécifiée, cette association remplacera toute ancienne
association de cette séquence. La table indiquée doit avoir
le même propriétaire et être dans le même schéma que la
séquence. Indiquer OWNED BY NONE
supprime toute association existante, rendant à la séquence
son « autonomie ».
-
nouveau_schema
-
Le nouveau schéma de la séquence.
Exemples
Redémarrer la séquence appelée serie à 105
:
ALTER SEQUENCE serie RESTART WITH 105;
Notes
Pour éviter de bloquer des transactions concurrentes lors de la
demande de numéros issus de la même séquence, les effets
d'
ALTER SEQUENCE
sur
les paramètres de génération de la séquence ne sont jamais
annulables. Ces changements prennent effet immédiatement et ne sont
pas réversibles. Néanmoins, les clauses OWNED
BY et SET SCHEMA sont des
modifications ordinaires du catalogue et, de ce fait, peuvent être
annulées.
ALTER SEQUENCE
n'affecte pas immédiatement les résultats de nextval pour les sessions, à l'exception de la
session courante, qui ont préalloué (caché) des valeurs de la
séquence. Elles épuisent les valeurs en cache avant de prendre en
compte les modifications sur les paramètres de génération de la
séquence. La session à l'origine de la commande est, quant à elle,
immédiatement affectée.
Certaines variantes d'
ALTER
TABLE
peuvent aussi être utilisées avec les
séquences. Ainsi, pour renommer une séquence, on peut utiliser
ALTER TABLE RENAME
.
Compatibilité
ALTER SEQUENCE
est
conforme au standard SQL, à
l'exception des variantes OWNED BY et
SET SCHEMA qui sont une extension
PostgreSQL™.