FirebirdSQL logo
 DOMAININDEX 

Renommer la colonne

Le mot-clé TO renomme une colonne existante.Le nouveau nom de colonne ne doit pas être présent dans la table.

Le nom d’une colonne ne peut pas être modifié si cette colonne est incluse dans une contrainte — clé primaire ou unique, clé étrangère, contrainte de colonne ou contrainte de contrôle de table CHECK.Le nom de la colonne ne peut pas non plus être modifié si cette colonne de la table est utilisée dans un déclencheur, une procédure stockée ou une vue.

Example 1. Renommer une colonne de table
ALTER TABLE STOCK
ALTER COLUMN MODELNAME TO NAME;

Changer le type de colonne

Le mot-clé TYPE change le type d’une colonne existante en un autre type valide.Tout type de modification qui entraînerait une perte de données n’est pas autorisé.Par exemple, le nombre de caractères du nouveau type de colonne ne peut pas être inférieur à celui qui a été défini précédemment.

Si une colonne a été déclarée comme un tableau, ni son type ni sa dimension ne peuvent être modifiés.

Le type de données d’une colonne faisant partie d’une correspondance clé étrangère / clé primaire (unique) ne peut pas être modifié.

Example 1. Modification du type de colonne d’une table
ALTER TABLE STOCK
ALTER COLUMN ITEMID TYPE BIGINT;

docnext count = 13

Modification de la position de la colonne

Le mot-clé POSITION permet de modifier la position d’une colonne existante.Les positions des colonnes sont numérotées à partir de 1.

  • Si un numéro de position inférieur à 1 est spécifié, un message d’erreur approprié sera émis.

  • Si un numéro de position supérieur au nombre de colonnes du tableau est saisi, les modifications ne seront pas exécutées, mais aucun message d’erreur ou d’avertissement ne suivra.

Example 1. Changer la position d’une colonne de tableau
ALTER TABLE STOCK
ALTER COLUMN ITEMID POSITION 5;

Définition et suppression de la valeur par défaut

La commande DROP DEFAULT supprime la valeur par défaut d’une colonne de table.

  • Si la colonne est basée sur un domaine avec une valeur par défaut — la valeur du domaine annulera cette suppression.

  • Si la valeur par défaut est supprimée sur une colonne qui n’a pas de valeur par défaut, ou dont la valeur par défaut est basée sur le domaine, cela fera échouer cette instruction.

Example 1. Suppression de la valeur par défaut d’une colonne
ALTER TABLE STOCK
ALTER COLUMN MODEL DROP DEFAULT;

La commande SET DEFAULT définit la valeur par défaut de la colonne de la table.Si la colonne avait déjà une valeur par défaut, elle sera remplacée par la nouvelle valeur.La valeur par défaut d’une colonne a toujours priorité sur la valeur par défaut du domaine.

Example 2. Définir une valeur par défaut pour la colonne
ALTER TABLE STOCK
ALTER COLUMN MODEL SET DEFAULT 1;

Définition et suppression d’une restriction NOT NULL

La commande SET NOT NULL ajoute une contrainte NOT NULL à la colonne de la table.

Note

L’ajout réussi d’une contrainte NOT NULL ne se produit qu’après une vérification de la table complète pour s’assurer que la colonne ne contient aucune valeur NULL.

Une contrainte explicite `NOT NULL' sur une colonne basée sur le domaine remplace les paramètres du domaine.Dans ce cas, la modification du domaine pour autoriser une valeur NULL ne s’applique pas à la colonne de la table.

Example 1. Ajout d’une restriction `NOT NULL'.
ALTER TABLE STOCK
ALTER COLUMN PROPID SET NOT NULL;

La commande DROP NOT NULL supprime la contrainte NOT NULL pour une colonne de table.Si la colonne est basée sur un domaine avec une contrainte NOT NULL, la contrainte du domaine prévaudra sur cette suppression.

Example 2. Suppression de la restriction `NOT NULL'.
ALTER TABLE STOCK
ALTER COLUMN ITEMID DROP NOT NULL;

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);

Attributs qui ne sont pas modifiables

Pour l’instant, il n’est pas possible de modifier l’option de tri par défaut..

La commande ALTER SQL SECURITY

La commande ALTER SQL SECURITY permet de modifier les privilèges avec lesquels les colonnes calculées sont calculées.Si l’option INVOKER est sélectionnée, les colonnes calculées sont calculées avec les privilèges de l’utilisateur appelant.Si l’option DEFINER est sélectionnée, les colonnes calculées sont calculées avec les privilèges de l’utilisateur définissant (propriétaire). Par défaut, les colonnes calculées sont calculées avec les privilèges de l’utilisateur appelant.Les triggers héritent également des privilèges d’exécution de la table, s’ils ne sont pas remplacés par les triggers eux-mêmes.

ALTER TABLE COUNTRY
ALTER SQL SECURITY DEFINER;

Gestion de la réplication

La commande ENABLE PUBLICATION inclut la table dans le jeu de réplication (publication). De même, la proposition DISABLE PUBLICATION exclut la table du jeu de réplication.

Example 1. Ajout d’une table à un ensemble de réplication
ALTER TABLE COUNTRY
ENABLE PUBLICATION;

Qui peut changer la table ?

L’instruction ALTER TABLE peut être exécutée :

  • Administrateurs

  • Le propriétaire de la table ;

  • Utilisateurs avec le privilège ALTER ANY TABLE.

Voir aussi :

CREATE TABLE, RECREATE TABLE.

DROP TABLE

Destination

Supprime une table existante.

Disponible en

DSQL, ESQL.

Syntaxe
DROP TABLE tablename
Table 1. Paramètres de l’opérateur DROP TABLE
Paramètre Description

tablename

Nom de la table.

L’instruction DROP TABLE supprime une table existante.Si la table a des dépendances, elle ne sera pas supprimée.La suppression d’une table supprime également tous les déclencheurs sur ses événements et les index construits pour ses champs.

Example 1. Suppression d’une table
DROP TABLE COUNTRY;

Qui peut supprimer la table ?

L’instruction DROP TABLE peut être exécutée :

  • Administrateurs

  • Le propriétaire de la table ;

  • Utilisateurs ayant le privilège `DROP ANY TABLE'.

Voir aussi :

CREATE TABLE, RECREATE TABLE.

RECREATE TABLE

Objectif

Pour créer une nouvelle table ou recréer une table existante.

Disponible en

DSQL.

Syntaxe
RECREATE [GLOBAL TEMPORARY] TABLE tablename
  [EXTERNAL [FILE] 'filespec']
  (<col_def> [, <col_def> | <tconstraint> ...])
  [ON COMMIT {DELETE | PRESERVE} ROWS]
  [SQL SECURITY {DEFINER | INVOKER}]

Pour une description complète des définitions de colonne et des contraintes de table, voir CREATE TABLE.

Crée ou recrée une table.Si une table portant ce nom existe déjà, l’instruction RECREATE TABLE tentera de la supprimer et d’en créer une nouvelle.L’instruction RECREATE TABLE ne s’exécutera pas si la table existante a des dépendances.

Exemples

Example 1. Créer ou recréer une table
RECREATE TABLE COUNTRY (
  COUNTRY COUNTRYNAME NOT NULL PRIMARY KEY,
  CURRENCY VARCHAR(10) NOT NULL);
Voir aussi :

CREATE TABLE, DROP TABLE.