FirebirdSQL logo
 DOMAININDEX 

Modification des colonnes d’identité

Pour les colonnes d’identité, il est possible de modifier la méthode de génération, la valeur de départ et la valeur d’incrémentation.

La commande SET GENERATED vous permet de changer la façon dont la colonne d’identité est générée.Il existe deux façons de générer une colonne d’identité :

  • Les colonnes BY DEFAULT permettent de remplacer la valeur générée par le système dans les opérateurs INSERT, UPDATE OR INSERT, MERGE en spécifiant simplement la valeur de cette colonne dans la liste des valeurs.

  • Les colonnes ALWAYS ne permettent pas d’écraser une valeur générée par le système, une erreur sera générée lors de la tentative d’écraser la valeur d’une telle colonne d’identité. Il est seulement possible d’écraser la valeur de cette colonne dans une instruction INSERT en spécifiant la directive OVERRIDING SYSTEM VALUE.

Example 1. Modification de la manière dont la colonne d’identité est générée
ALTER TABLE objects
ALTER ID SET GENERATED ALWAYS;

Si seule la clause RESTART est spécifiée, la valeur du générateur est remise à zéro.La clause optionnelle WITH permet de spécifier une valeur autre que zéro pour la nouvelle valeur de l’oscillateur interne.

Example 2. Modifier la valeur du générateur actuel pour la colonne d’identité
ALTER TABLE objects
ALTER ID RESTART WITH 100;

La commande SET INCREMENT [BY] vous permet de changer la valeur d’incrémentation de la colonne d’identité.La valeur de l’incrément doit être différente de 0.

Example 3. Modification de l’incrément de la colonne d’identité
ALTER TABLE objects
ALTER ID SET INCREMENT BY 2;

Plusieurs propriétés d’une colonne d’identité peuvent être modifiées dans une seule déclaration, par exemple

Example 4. Modification de plusieurs propriétés d’une colonne d’identité
ALTER TABLE objects
ALTER ID SET GENERATED ALWAYS RESTART SET INCREMENT BY 2;

La commande DROP IDENTITY supprime la séquence système associée à la colonne identité et la convertit en une colonne normale.

Example 5. Transformer une colonne d’identité en colonne régulière
ALTER TABLE objects
ALTER ID DROP INDENTITY;

Modification des colonnes calculées

Pour les colonnes calculées (GENERATED ALWAYS AS ou COMPUTED BY), il est possible de modifier le type et l’expression de la colonne calculée.Il n’est pas possible de transformer une colonne normale en une colonne calculée et vice versa.

Example 1. Modification des colonnes calculées
ALTER TABLE SALARY_HISTORY
ALTER NEW_SALARY GENERATED ALWAYS
AS (OLD_SALARY + OLD_SALARY * PERCENT_CHANGE / 100),
ALTER SALARY_CHANGE COMPUTED
BY (OLD_SALARY * PERCENT_CHANGE / 100);