Documentation PostgreSQL 8.1.23 > Référence > Commandes SQL > ALTER SEQUENCE | |
ALTER SCHEMA | ALTER TABLE |
ALTER SEQUENCE nom [ INCREMENT [ BY ] increment ] [ MINVALUE valeurmin | NO MINVALUE ] [ MAXVALUE valeurmax | NO MAXVALUE ] [ RESTART [ WITH ] debut ] [ CACHE cache ] [ [ NO ] CYCLE ] ALTER SEQUENCE nom SET SCHEMA nouveau_schema
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.
Le nom de la séquence à modifier (éventuellement qualifié du nom du schéma).
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.
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.
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.
La clause optionnelle RESTART WITH start modifie la valeur courante de la séquence.
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.
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.
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é.
Le nouveau schéma de la séquence.
Pour éviter de bloquer des transactions concurrentes lors de la demande de numéros issus de la même séquence, ALTER SEQUENCE n'est jamais annulé ; les modifications prennent effet immédiatement et ne sont pas réversibles.
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 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.