ALTER SEQUENCE

L'instruction ALTER SEQUENCE peut être utilisée pour modifier une séquence.

L'instruction ALTER SEQUENCE peut être utilisée pour modifier une séquence de l'une des manières suivantes:

  • Redémarrage de la séquence
  • Modification de l'incrément entre les futures valeurs de séquence
  • Définition ou élimination des valeurs minimales ou maximales
  • Modification du nombre de numéros de séquence mis en cache
  • Modification de l'attribut qui détermine si la séquence peut être cyclique ou non
  • Modification de la génération des numéros de séquence dans l'ordre de la demande

Invocation

Cette instruction peut être imbriquée dans un programme d'application ou émise de manière interactive. Il s'agit d'une instruction exécutable qui peut être préparée dynamiquement.

Autorisation

Les droits détenus par l'ID autorisation de l'instruction doit inclure au moins l'un des éléments suivants :

  • Pour la séquence identifiée dans l'instruction:
    • Privilège USAGE sur le schéma contenant la séquence
    • Privilège ALTER pour la séquence
  • droits d'accès administrateur de base de données

Les droits détenus par l'ID autorisation de l'instruction doit inclure au moins l'un des éléments suivants :

  • Les droits système suivants :
    • *USE à la commande CHGDTAARA (Modifier une zone de données)
    • *USE pour la commande RTVDTAARA (Extraire une zone de données)
  • droits d'administration

Les droits détenus par l'ID autorisation de l'instruction doit inclure au moins l'un des éléments suivants :

  • Pour la table de catalogue SYSSEQOBJECTS:
    • Le privilège UPDATE sur la table, et
    • Le privilège USAGE sur le schéma QSYS2
  • droits d'administration

Si un type distinct est référencé, les privilèges détenus par l'ID autorisation de l'instruction doivent inclure au moins l'un des éléments suivants:

  • Pour le type distinct identifié dans l'instruction:
    • le privilège USAGE sur le type distinct, et
    • Privilège USAGE sur le schéma contenant le type distinct
  • droits d'administration

Pour plus d'informations sur les droits système correspondant aux privilèges SQL, voir Droits système correspondants lors de la vérification des privilèges sur une séquence, Droits système correspondants lors de la vérification des privilèges sur une table ou une vue, et Droits système correspondants lors de la vérification des privilèges sur un type distinct.

Syntaxe

Lire le diagramme de syntaxeIgnorer le diagramme de syntaxe graphiqueALTER SEQUENCEnom-séquenceDATA TYPEtype de donnéesRESTARTWITHconstante-numériqueINCREMENT BYconstante-numériqueNO MINVALUEMINVALUEconstante-numériqueNO MAXVALUEMAXVALUEconstante-numériqueNO CYCLECYCLENO CACHECACHEconstante-entierNO ORDERORDER1
Remarques :
  • 1 La même clause ne doit pas être spécifiée plus d'une fois.
type de données
Lire le diagramme de syntaxeIgnorer le diagramme de syntaxe graphiquetype intégrénom-type-distinct
type intégré
Lire le diagramme de syntaxeIgnorer le diagramme de syntaxe graphiqueSMALLINTINTEGERINTBIGINTDECIMALDECNUMERICNUM(5,0)(Entier,0)

Description

nom-séquence
Identifie la séquence à modifier. Le nom doit identifier une séquence qui existe déjà sur le serveur en cours.
DATA TYPE type-données
Indique le nouveau type de données à utiliser pour la valeur de séquence. Le type de données peut être n'importe quel type numérique exact (SMALLINT, INTEGER, BIGINT, DECIMAL ou NUMERIC) avec une échelle de zéro, ou un type distinct défini par l'utilisateur pour lequel le type de source est un type numérique exact avec une échelle de zéro.

Chacun des attributs START WITH, INCREMENT BY, MINVALUE et MAXVALUE existants qui ne sont pas modifiés par l'instruction ALTER SEQUENCE doit contenir une valeur pouvant être affectée à une colonne du type de données associé au nouveau type de données.

type intégré
Indique le nouveau type de données intégré utilisé comme base pour la représentation interne de la séquence. Si le type de données est DECIMAL ou NUMERIC, la précision doit être inférieure ou égale à 63 et l'échelle doit être égale à 0. Pour une description plus complète de chaque type de données intégré, voir CREATE TABLE .

Pour la portabilité des applications entre les plateformes, utilisez DECIMAL au lieu d'un type de données NUMERIC.

nom-type-distinct
Indique que le nouveau type de données de la séquence est un type distinct (type de données défini par l'utilisateur). Si le type de source est DECIMAL ou NUMERIC, la précision de la séquence est la précision du type de source du type distinct. La précision du type de source doit être inférieure ou égale à 63 et l'échelle doit être égale à 0. Si un nom de type distinct est spécifié sans nom de schéma, le nom de type distinct est résolu en recherchant les schémas dans le chemin SQL.
REDEMARRAGE
Redémarre la séquence. Si numérique-constante n'est pas spécifié, la séquence est redémarrée à la valeur spécifiée implicitement ou explicitement comme valeur de départ dans l'instruction CREATE SEQUENCE qui a créé la séquence à l'origine.
WITH constante numérique
Redémarre la séquence avec la valeur spécifiée. Cette valeur peut être n'importe quelle valeur positive ou négative pouvant être affectée à une colonne du type de données associé à la séquence, sans chiffres non nuls à droite du séparateur décimal.
INCREMENT BY constante numérique
Indique l'intervalle entre les valeurs consécutives de la séquence. Cette valeur peut être n'importe quelle valeur positive ou négative pouvant être affectée à une colonne du type de données associé à la séquence, et ne dépasse pas la valeur d'une constante entière de grande taille, sans chiffres différents de zéro à droite du séparateur décimal.

Si cette valeur est négative, il s'agit d'une séquence décroissante. Si cette valeur est 0 ou positive, il s'agit d'une séquence croissante après l'instruction ALTER.

NO MINVALUE ou MINVALUE
Indique la valeur minimale à laquelle une séquence décroissante effectue un cycle ou arrête de générer des valeurs, ou une séquence croissante effectue un cycle après avoir atteint la valeur maximale.
AUCUNE VALEUR
Pour une séquence croissante, la valeur est la valeur de départ d'origine. Pour une séquence décroissante, la valeur est la valeur minimale du type de données (et de la précision, si DECIMAL ou NUMERIC) associé à la séquence.
MINVALUE constante-numérique
Indique la constante numérique qui correspond à la valeur minimale générée pour cette séquence. Cette valeur peut être n'importe quelle valeur positive ou négative pouvant être affectée à une colonne du type de données associé à la séquence et sans chiffres non nuls à droite du séparateur décimal. La valeur doit être inférieure ou égale à la valeur maximale.
NO MAXVALUE ou MAXVALUE
Indique la valeur maximale à laquelle une séquence croissante effectue des cycles ou arrête de générer des valeurs, ou une séquence décroissante effectue des cycles après avoir atteint la valeur minimale.
AUCUNE VALEUR MAXIMALE
Pour une séquence croissante, la valeur correspond à la valeur maximale du type de données (et de la précision, si DECIMAL ou NUMERIC) associé à la séquence. Pour une séquence décroissante, la valeur est la valeur de départ d'origine.
MAXVALUE constante-numérique
Indique la constante numérique qui correspond à la valeur maximale générée pour cette séquence. Cette valeur peut être n'importe quelle valeur positive ou négative pouvant être affectée à une colonne du type de données associé à la séquence et sans chiffres non nuls à droite du séparateur décimal. La valeur doit être supérieure ou égale à la valeur minimale.
CYCLE ou NO CYCLE
Indique si cette séquence doit continuer à générer des valeurs après avoir atteint la valeur maximale ou minimale de la séquence.
AUCUN CYCLE DE CYCLE
Indique que les valeurs ne seront pas générées pour la séquence une fois que la valeur maximale ou minimale de la séquence aura été atteinte.
Cycle
Indique que les valeurs continuent d'être générées pour cette séquence une fois que la valeur maximale ou minimale a été atteinte. Si cette option est utilisée, une fois qu'une séquence croissante atteint la valeur maximale de la séquence, elle génère sa valeur minimale. Une fois qu'une séquence décroissante atteint sa valeur minimale de la séquence, elle génère sa valeur maximale. Les valeurs maximale et minimale de la séquence déterminent la plage utilisée pour le cyclage.

Lorsque CYCLE est en vigueur, des valeurs en double peuvent être générées pour une séquence par le gestionnaire de base de données.

CACHE ou NO CACHE
Indique s'il faut conserver certaines valeurs préallouées en mémoire. La préallocation et le stockage des valeurs dans le cache améliorent les performances de l'expression de séquence NEXT VALUE.
CACHE entier-constante
Indique le nombre maximal de valeurs de séquence préallouées et conservées en mémoire. La préallocation et le stockage des valeurs dans le cache réduisent les entrées-sorties synchrones lorsque des valeurs sont générées pour la séquence.

Dans certaines situations, telles que l'échec du système, toutes les valeurs de séquence mises en cache qui n'ont pas été utilisées dans les instructions validées sont perdues et ne seront donc jamais utilisées. La valeur spécifiée pour l'option CACHE correspond au nombre maximal de valeurs de séquence pouvant être perdues dans ces situations.

La valeur minimale est 2.

AUCUN CACHE
Indique que les valeurs de la séquence ne doivent pas être préallouées. Il garantit qu'il n'y a pas de perte de valeurs dans les situations, telles que la défaillance du système. Lorsque cette option est spécifiée, les valeurs de la séquence ne sont pas stockées dans le cache. Dans ce cas, chaque demande de nouvelle valeur pour la séquence génère des entrées-sorties synchrones.
NO ORDER ou ORDER
Indique si les numéros de séquence doivent être générés dans l'ordre de la demande.
AUCUNE COMMANDE
Indique que les numéros de séquence n'ont pas besoin d'être générés dans l'ordre de la demande.
Commande
Indique que les numéros de séquence sont générés dans l'ordre de la demande. Si ORDER est indiqué, les performances de l'expression de séquence NEXT VALUE seront pires que si NO ORDER est indiqué.

Remarques

Modification d'une séquence:

  • Seuls les numéros de séquence futurs sont affectés par l'instruction ALTER SEQUENCE.
  • Toutes les valeurs mises en cache sont perdues lorsqu'une séquence est modifiée.
  • Après avoir redémarré une séquence ou l'avoir modifiée en cycle, il est possible qu'une valeur générée dupliquera une valeur précédemment générée pour cette séquence.

alternatives de syntaxe: Les mots clés suivants sont des synonymes pris en charge pour la compatibilité avec les versions antérieures d'autres produits Db2® . Ces mots clés ne sont pas standard et ne doivent pas être utilisés:

  • Les mots clés NOMINVALUE, NOMAXVALUE, NOCYCLE, NOCACHE et NOORDER peuvent être utilisés comme synonymes de NO MINVALUE, NO MAXVALUE, NO CYCLE, NO CACHE et NO ORDER.

Exemples

Une raison possible pour spécifier RESTART sans valeur numérique serait de réinitialiser la séquence à la valeur START WITH. Dans cet exemple, l'objectif est de générer les nombres de 1 jusqu'au nombre de lignes d'une table, puis d'insérer les nombres dans une colonne ajoutée à la table à l'aide de tables temporaires.

  ALTER SEQUENCE ORG_SEQ RESTART

  DECLARE GLOBAL TEMPORARY TABLE TEMP_ORG AS
    (SELECT NEXT VALUE FOR ORG_SEQ, ORG.*
    FROM ORG) WITH DATA

  INSERT INTO TEMP_ORG
    SELECT NEXT VALUE FOR ORG_SEQ, ORG.*
    FROM ORG

Une autre utilisation serait d'obtenir des résultats lorsque toutes les lignes résultantes sont numérotées:

  ALTER SEQUENCE ORG_SEQ RESTART

  SELECT NEXT VALUE FOR ORG_SEQ, ORG.*
    FROM ORG