Remarque
L’accès à cette page requiert une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page requiert une autorisation. Vous pouvez essayer de modifier des répertoires.
S’applique à :SQL Server
Azure SQL Database
Azure SQL Managed Instance
Base de données SQL dans Microsoft Fabric
Modifie les arguments d'un objet séquence existant. Si la séquence a été créée avec l’option CACHE , la modification de la séquence recrée le cache.
Les objets séquences sont créés à l’aide de l’instruction CREATE SEQUENCE. Les séquences sont des valeurs entières et peuvent être de tout type de données qui retourne un entier. Le type de données ne peut pas être modifié à l’aide de l’instruction ALTER SEQUENCE . Pour modifier le type de données, supprimez et créez l'objet séquence.
Une séquence est un objet lié au schéma défini par l'utilisateur qui génère une séquence de valeurs numériques d'après une spécification. De nouvelles valeurs sont générées à partir d’une séquence en appelant la NEXT VALUE FOR fonction. Permet sp_sequence_get_range d’obtenir plusieurs numéros de séquence à la fois. Pour plus d’informations et de scénarios qui utilisent à la fois CREATE SEQUENCE, sp_sequence_get_rangeet la NEXT VALUE FOR fonction, consultez Numéros de séquence.
Conventions de la syntaxe Transact-SQL
Syntaxe
ALTER SEQUENCE [ schema_name. ] sequence_name
[ RESTART [ WITH <constant> ] ]
[ INCREMENT BY <constant> ]
[ { MINVALUE <constant> } | { NO MINVALUE } ]
[ { MAXVALUE <constant> } | { NO MAXVALUE } ]
[ CYCLE | { NO CYCLE } ]
[ { CACHE [ <constant> ] } | { NO CACHE } ]
[ ; ]
Arguments
sequence_name
Spécifie le nom unique sous lequel la séquence est connue dans la base de données. Le type est sysname.
REDÉMARRER [ AVEC <CONSTANT> ]
Valeur suivante retournée par l’objet séquence. Si elle est fournie, la RESTART WITH valeur doit être un entier inférieur ou égal à la valeur maximale et supérieure ou égale à la valeur minimale de l’objet séquence. Si la WITH valeur est omise, la numérotation de séquence redémarre en fonction des options d’origine CREATE SEQUENCE .
INCRÉMENT BY <constante>
Valeur utilisée pour incrémenter (ou décrémenter si négatif) la valeur de base de l’objet séquence pour chaque appel à la NEXT VALUE FOR fonction. Si l’incrément est une valeur négative, l’objet séquence descend, sinon, il est croissant. L’incrément ne peut pas être 0.
[ CONSTANTE< MINVALUE >| NO MINVALUE ]
Spécifie les limites de l'objet séquence. Si NO MINVALUE elle est spécifiée, la valeur minimale possible du type de données de séquence est utilisée.
[ CONSTANTE< MAXVALUE >| NO MAXVALUE ]
Spécifie les limites de l'objet séquence. Si NO MAXVALUE elle est spécifiée, la valeur maximale possible du type de données de séquence est utilisée.
[ CYCLE | PAS CYCLE ]
Cette propriété spécifie si l’objet séquence doit redémarrer à partir de la valeur minimale (ou maximale pour les objets séquence décroissants) ou lever une exception lorsque sa valeur minimale ou maximale est dépassée.
Notes
Une fois que la valeur suivante est la valeur minimale ou maximale, et non la START VALUE séquence.
[ CACHE [ <constante> ] | NO CACHE ]
Augmente les performances pour les applications qui utilisent des objets séquences en réduisant le nombre d'entrées/sorties requises pour rendre des valeurs générées persistantes dans les tables système.
Pour plus d’informations sur le comportement du cache, consultez CREATE SEQUENCE.
Remarques
Pour plus d’informations sur la façon dont les séquences sont créées et la façon dont le cache de séquence est géré, consultez CREATE SEQUENCE.
Les MINVALUE séquences croissants et les MAXVALUE séquences décroissantes ne peuvent pas être modifiées en une valeur qui n’autorise pas la START WITH valeur de la séquence. Pour remplacer la MINVALUE séquence croissant par un nombre supérieur à la START WITH valeur ou pour remplacer la MAXVALUE séquence décroissante par un nombre inférieur à la START WITH valeur, incluez l’argument RESTART WITH permettant de redémarrer la séquence à un point souhaité qui se trouve dans la plage minimale et maximale.
Métadonnées
Pour plus d’informations sur les séquences, interrogez sys.sequences.
Autorisations
Nécessite ALTER une autorisation sur la séquence ou ALTER l’autorisation sur le schéma. Pour accorder ALTER l’autorisation sur la séquence, utilisez ALTER ON OBJECT le format suivant :
GRANT ALTER
ON OBJECT::Test.TinySeq TO [AdventureWorks\Larry];
La propriété d’un objet séquence peut être transférée à l’aide de l’instruction ALTER AUTHORIZATION .
Audit
Pour auditer ALTER SEQUENCE, surveillez le SCHEMA_OBJECT_CHANGE_GROUP.
Exemples
Pour obtenir des exemples de création de séquences et d’utilisation de la NEXT VALUE FOR fonction pour générer des numéros de séquence, consultez Numéros de séquence.
R. Modifier une séquence
L’exemple suivant crée un schéma nommé Test et une séquence nommée TestSeq à l’aide du type de données int, avec une plage comprise entre 100 et 200. La séquence démarre à 125 et est incrémentée de 25 chaque fois qu'un nombre est généré. Étant donné que la séquence est configurée pour cycle, lorsque la valeur dépasse la valeur maximale de 200, la séquence redémarre à la valeur minimale de 100.
CREATE SCHEMA Test;
GO
CREATE SEQUENCE Test.TestSeq
AS INT
START WITH 125
INCREMENT BY 25
MINVALUE 100
MAXVALUE 200
CYCLE
CACHE 3;
GO
L’exemple suivant modifie la séquence TestSeq pour que la plage soit comprise entre 50 et 200. La séquence redémarre la série de numérotation à 100 et est incrémentée de 50 chaque fois qu'un nombre est généré.
ALTER SEQUENCE Test.TestSeq
RESTART WITH 100
INCREMENT BY 50
MINVALUE 50
MAXVALUE 200
NO CYCLE
NO CACHE;
GO
Étant donné que la séquence ne cycle pas, la NEXT VALUE FOR fonction génère une erreur lorsque la séquence dépasse 200.
B. Redémarrer une séquence
L’exemple suivant crée une séquence nommée CountBy1. La séquence utilise les valeurs par défaut.
CREATE SEQUENCE Test.CountBy1;
Pour générer une valeur de séquence, le propriétaire exécute ensuite l'instruction suivante :
SELECT NEXT VALUE FOR Test.CountBy1;
La valeur retournée -9 223 372 036 854 775 808 est la plus petite valeur possible pour le type de données bigint. Le propriétaire réalise qu’il voulait que la séquence commence par 1, mais n’a pas indiqué la START WITH clause lors de la création de la séquence. Pour corriger cette erreur, le propriétaire exécute l'instruction suivante.
ALTER SEQUENCE Test.CountBy1
RESTART WITH 1;
Puis le propriétaire exécute une nouvelle fois l'instruction suivante pour générer un numéro séquentiel.
SELECT NEXT VALUE FOR Test.CountBy1;
Le nombre correspond maintenant à 1, comme attendu.
La CountBy1 séquence a été créée à l’aide de la valeur par défaut pour NO CYCLE qu’elle cesse de fonctionner après avoir généré le numéro 9 223 372 036 854 775 807. Les appels suivants à l’objet séquence retournent l’erreur 11728. L'instruction suivante modifie l'objet séquence en vue d'une répétition et définit un cache de 20.
ALTER SEQUENCE Test.CountBy1
CYCLE
CACHE 20;
Maintenant lorsque l'objet séquence atteint 9 223 372 036 854 775 807, il entame un cycle de répétition et le nombre suivant à l'issue du cycle correspond à la valeur minimale du type de données, à savoir -9 223 372 036 854 775 808.
Le propriétaire s’est rendu compte que le type de données bigint utilise 8 octets chaque fois qu’il est utilisé. Le type de données int qui utilise 4 octets est suffisant. Toutefois, le type de données d’un objet séquence ne peut pas être modifié. Pour passer à un type de données int, le propriétaire doit supprimer l’objet séquence et recréer l’objet avec le type de données approprié.