

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# `ALTER SEQUENCE`
<a name="alter-sequence-syntax-support"></a>

`ALTER SEQUENCE`— modifie la définition d'un générateur de séquences.

**Important**  
Lorsque vous utilisez des séquences, la valeur du cache doit être soigneusement prise en compte. Pour plus d'informations, consultez la légende Important sur la [`CREATE SEQUENCE`](create-sequence-syntax-support.md) page.  
Pour obtenir des conseils sur la meilleure façon d'utiliser les séquences basées sur les modèles de charge de travail, voir[Utilisation de séquences et de colonnes d'identité](sequences-identity-columns-working-with.md).

## Syntaxe prise en charge
<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`modifie les paramètres d'un générateur de séquences existant. Tous les paramètres qui ne sont pas spécifiquement définis dans la `ALTER SEQUENCE` commande conservent leurs paramètres antérieurs.

Vous devez être propriétaire de la séquence à utiliser`ALTER SEQUENCE`. Pour modifier le schéma d'une séquence, vous devez également disposer de `CREATE` privilèges sur le nouveau schéma. Pour modifier le propriétaire, vous devez être en mesure d'`SET ROLE`accéder au nouveau rôle propriétaire, et ce rôle doit disposer de `CREATE` privilèges sur le schéma de la séquence. (Ces restrictions font en sorte que le fait de modifier le propriétaire n'a aucun effet que vous ne pourriez pas faire en supprimant et en recréant la séquence. Cependant, un superutilisateur peut de toute façon modifier la propriété de n'importe quelle séquence.)

## Parameters
<a name="alter-sequence-parameters"></a>

***name***  
Nom (éventuellement qualifié par schéma) d'une séquence à modifier.

**`IF EXISTS`**  
Ne renvoie pas d'erreur si la séquence n'existe pas. Un avis est émis dans ce cas.

***increment***  
La clause `INCREMENT BY increment` est facultative. Une valeur positive fera une séquence ascendante, une valeur négative une séquence descendante. Si elle n'est pas spécifiée, l'ancienne valeur d'incrément sera conservée.

***minvalue* / `NO MINVALUE`**  
La clause facultative `MINVALUE minvalue` détermine la valeur minimale qu'une séquence peut générer. Si elle `NO MINVALUE` est spécifiée, la valeur par défaut de 1 et la valeur minimale du type de données pour les séquences ascendantes et descendantes, respectivement, seront utilisées. Si aucune option n'est spécifiée, la valeur minimale actuelle sera maintenue.

***maxvalue* / `NO MAXVALUE`**  
La clause facultative `MAXVALUE maxvalue` détermine la valeur maximale de la séquence. Si `NO MAXVALUE` cette option est spécifiée, les valeurs par défaut de la valeur maximale du type de données et de -1 pour les séquences ascendantes et descendantes, respectivement, seront utilisées. Si aucune option n'est spécifiée, la valeur maximale actuelle sera maintenue.

**`CYCLE`**  
Le mot `CYCLE` clé facultatif peut être utilisé pour permettre à la séquence de s'enrouler lorsque le *maxvalue* ou *minvalue* a été atteint par une séquence ascendante ou descendante respectivement. Si la limite est atteinte, le prochain nombre généré sera respectivement *maxvalue* le *minvalue* ou.

**`NO CYCLE`**  
Si le mot `NO CYCLE` clé facultatif est spécifié, tout appel effectué `nextval` après que la séquence a atteint sa valeur maximale renverra une erreur. Si aucun `CYCLE` `NO CYCLE` des deux n'est spécifié, le comportement de l'ancien cycle sera conservé.

***start***  
La clause facultative `START WITH start` modifie la valeur de départ enregistrée de la séquence. Cela n'a aucun effet sur la valeur de séquence actuelle ; cela définit simplement la valeur que `ALTER SEQUENCE RESTART` les futures commandes utiliseront.

***restart***  
La clause facultative `RESTART [ WITH restart ]` modifie la valeur actuelle de la séquence. Cela revient à appeler la `setval` fonction avec `is_called` = `false` : la valeur spécifiée sera renvoyée lors du prochain appel de`nextval`. Écrire `RESTART` sans *restart* valeur équivaut à fournir la valeur de départ enregistrée par `CREATE SEQUENCE` ou définie pour la dernière fois par`ALTER SEQUENCE START WITH`.  
Contrairement à un `setval` appel, une `RESTART` opération sur une séquence est transactionnelle et empêche les transactions simultanées d'obtenir des numéros à partir de la même séquence. Si ce n'est pas le mode de fonctionnement souhaité, `setval` il doit être utilisé.

***cache***  
La clause `CACHE cache` permet de préallouer les numéros de séquence et de les stocker en mémoire pour un accès plus rapide. La valeur doit être soit 1, soit une valeur >= 65536. Si elle n'est pas spécifiée, l'ancienne valeur du cache sera conservée. Pour plus d'informations sur le comportement du cache, consultez les instructions ci-dessous[`CREATE SEQUENCE`](create-sequence-syntax-support.md).

**`OWNED BY table_name.column_name` / `OWNED BY NONE`**  
`OWNED BY`Cette option permet d'associer la séquence à une colonne de table spécifique, de sorte que si cette colonne (ou le tableau entier) est supprimée, la séquence sera également automatiquement supprimée. Si elle est spécifiée, cette association remplace toute association précédemment spécifiée pour la séquence. La table spécifiée doit avoir le même propriétaire et être dans le même schéma que la séquence. La spécification `OWNED BY NONE` supprime toute association existante, rendant la séquence « autonome ».

***new\$1owner***  
Le nom d'utilisateur du nouveau propriétaire de la séquence.

***new\$1name***  
Le nouveau nom de la séquence.

***new\$1schema***  
Le nouveau schéma de la séquence.

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

`ALTER SEQUENCE`n'affectera pas immédiatement les `nextval` résultats dans les backends, autres que celui en cours, qui ont des valeurs de séquence préallouées (mises en cache). Ils utiliseront toutes les valeurs mises en cache avant de remarquer les paramètres de génération de séquence modifiés. Le backend actuel sera immédiatement affecté.

`ALTER SEQUENCE`n'affecte pas le `currval` statut de la séquence.

`ALTER SEQUENCE`peut entraîner d'autres transactions pour OCC.

Pour des raisons historiques, il `ALTER TABLE` peut également être utilisé avec des `ALTER TABLE` séquences ; mais les seules variantes autorisées avec des séquences sont équivalentes aux formes présentées ci-dessus.

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

Redémarrer une séquence appelée`serial`, à 105 :

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

## Compatibilité
<a name="alter-sequence-compatibility"></a>

`ALTER SEQUENCE`est conforme à la norme SQL, à l'exception des `SET SCHEMA` clauses`AS`,`START WITH`,`OWNED BY`,`OWNER TO`, et`RENAME TO`, qui sont des extensions PostgreSQL.