FirebirdSQL logo

ALTER TABLE

Objectif

Modifie la structure de la table.

Disponible en

DSQL, ESQL.

Syntaxe
ALTER TABLE tablename
  <operation> [, <operation>];

<operation> ::=
    ADD <col_def>
  | ADD <tconstraint>
  | DROP colname
  | DROP CONSTRAINT constr_name
  | DROP SQL SECURITY
  | ALTER [COLUMN] colname <col_mod>
  | ALTER SQL SECURITY {DEFINER | INVOKER}
  | {ENABLE | DISABLE} PUBLICATION

<col_def> ::=
    <regular_col_def>
  | <computed_col_def>
  | <identity_col_def>

<regular_col_def> ::=
  colname { <datatype> | domainname }
  [DEFAULT {literal | NULL | <context_var>}]
  [NOT NULL]
  [<col_constraint>]
  [COLLATE collation_name]


<computed_col_def>  ::=
  colname [<datatype>]
  {COMPUTED [BY] | GENERATED ALWAYS AS} (<expression>)

<identity_col_def> ::=
  colname [<datatype>] {ALWAYS | GENERATED BY} DEFAULT AS IDENTITY
  [(START WITH startvalue)] [<col_constraint>]

<col_mod> ::=
     TO newname
  |  POSITION newpos
  | <regular_col_mod>
  | <computed_col_mod>
  | <identity_col_mod>

<regular_col_mod> ::=
  |  TYPE { <datatype>  | domain_name }
  |  SET DEFAULT {literal | NULL | <context_var>}
  |  DROP DEFAULT
  |  SET NOT NULL
  |  DROP NOT NULL

<computed_col_mod> ::=
  [TYPE <datatype>] {GENERATED ALWAYS AS | COMPUTED [BY]} (<expression>)

<identity_col_mod> ::=
     <alter identity column option> ...
  |  SET GENERATED { ALWAYS | BY DEFAULT } [<alter identity column option> ...]
  |  DROP INDENITY

<alter identity column option> ::=
     RESTART [ WITH startvalue ]
  |  SET INCREMENT [BY] incrementvalue

<datatype> ::=
    <scalar_datatype> | <blob_datatype> | <array_datatype>

<scalar_datatype> ::= Voir Syntaxe des types de données scalaires.

<blob_datatype> ::= Voir Syntaxe du type de données BLOB.

<array_datatype> ::= Voir syntaxe des tableaux.

<col_constraint> ::=
  [CONSTRAINT constr_name]
  {   UNIQUE [<using_index>]
    | PRIMARY KEY [<using_index>]
    | REFERENCES other_table [(other_col)]
        [ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
        [ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
        [<using_index>]
    | CHECK (<check_condition>)
  }

<tconstraint> ::=
  [CONSTRAINT constr_name]
  {   UNIQUE (<col_list>) [<using_index>]
    | PRIMARY KEY (<col_list>) [<using_index>]
    | FOREIGN KEY (<col_list>)
      REFERENCES other_table [(<col_list>)]
        [ON DELETE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
        [ON UPDATE { NO ACTION | CASCADE | SET DEFAULT | SET NULL}]
        [<using_index>]
    | CHECK (<check_condition>)
  }

<col_list> ::= colname [, colname ...]

<using_index> ::= USING [ASC[ENDING] | DESC[ENDING]] INDEX indexname

<check_condition> ::=
    <val> <operator> <val>
  | <val> [NOT] BETWEEN <val> AND <val>
  | <val> [NOT] IN (<val> [, <val> ...] | <select_list>)
  | <val> IS [NOT] NULL
  | <val> IS [NOT] DISTINCT <val>
  | <val> IS [NOT] {TRUE | FALSE | UNKNOWN}
  | <val> [NOT] CONTAINING <val>
  | <val> [NOT] STARTING [WITH] <val>
  | <val> [NOT] LIKE <val> [ESCAPE <val>]
  | <val> [NOT] SIMILAR TO <val> [ESCAPE <val>]
  | <val> <operator> {ALL | SOME | ANY} (<select_list>)
  | [NOT] EXISTS (<select_expr>)
  | [NOT] SINGULAR (<select_expr>)
  | (<check_condition>)
  | NOT <check_condition>
  | <check_condition> OR <check_condition>
  | <check_condition> AND <check_condition>


<operator> ::=
    <> | != | ^= | ~= | = | < | > | <= | >=
  | !< | ^< | ~< | !> | ^> | ~>

<val> ::=
    colname [[<array_idx> [, <array_idx> ...]]]
  | literal
  | <context_var>
  | <expression>
  | NULL
  | NEXT VALUE FOR genname
  | GEN_ID(genname, <val>)
  | CAST(<val> AS <datatype>)
  | (<select_one>)
  | func(<val> [, <val> ...])


<cast_type> ::=
   <datatype>
  | [TYPE OF] domain_name
  | TYPE OF COLUMN rel.colname
Table 1. Paramètres de l’opérateur ALTER TABLE
Paramètre Description

tablename

Nom de la table.

operation

Une des opérations autorisées pour modifier la structure d’une table.

colname

Nom de la colonne de la table, peut contenir jusqu’à 63 caractères.Doit être unique au sein de la table.

newname

Nouveau nom de colonne de la table, peut avoir jusqu’à 63 caractères.Doit être unique au sein de la table.

gencolname

Le nom de la colonne de la table à calculer.

idencolname

Nom de la colonne d’identité.

newpos

Nouvelle position de la colonne dans le tableau.Un nombre entier compris entre 1 et le nombre de colonnes du tableau.

datatype

Type de données SQL.

domain_name

Nom de domaine.

startvalue

La valeur initiale de la colonne d’identité.

incrementvalue

La valeur incrémentale pour la colonne d’identité.Doit être différent de 0.

col_constraint

Restriction de la colonne.

tconstraint

Contrainte de la table.

constr_name

Nom de la contrainte, peut contenir jusqu’à 63 caractères.

other_table

Le nom de la table à laquelle la clé étrangère fait référence.

other_col

La colonne de la table à laquelle la clé étrangère fait référence.

using_index

Vous permet de définir le nom de l’index généré automatiquement pour la contrainte, et éventuellement de définir si l’index sera en ordre croissant (par défaut) ou décroissant.

literal

Litéral.

context_var

Toute variable contextuelle dont le type est compatible avec le type de données de la colonne.

check_condition

Condition de contrôle des contraintes.Exécuté si évalué comme TRUE ou NULL/UNKNOWN.

collation_name

Le nom de l’ordre de tri.Doit être spécifié si vous voulez que l’ordre de tri d’une colonne soit différent de l’ordre de tri par défaut pour le jeu de caractères de cette colonne.

select_one

L’opérateur SELECT sélectionne une colonne et renvoie une seule ligne.

select_list

L’opérateur SELECT sélectionne une colonne et retourne zéro ou plusieurs lignes.

select_expr

L’opérateur SELECT sélectionne plusieurs colonnes et renvoie zéro ou plusieurs lignes.

experssion

Expression.

genname

Le nom de la séquence (générateur).

func

Fonction scalaire.

L’instruction ALTER TABLE modifie la structure d’une table existante.Une seule instruction ALTER TABLE permet de multiples opérations d’ajout/suppression de colonnes et de contraintes, ainsi que des modifications de colonnes.La liste des opérations effectuées lors de la modification d’une table est séparée par une virgule.

Compteur de format

Certaines modifications apportées à la structure des tables augmenteront le compteur de format attribué à chaque table.Le nombre de formats pour chaque table est limité à 255.Lorsque le compteur de format atteint cette valeur, vous ne pouvez plus modifier la structure de la table.

Remise à zéro du compteur de format
Pour réinitialiser le compteur de format, la base de données doit être sauvegardée et restaurée (avec l’utilitaire gbak).