ALTER TABLE table [ * ] ADD [ COLUMN ] ER">coBLE> type ALTER TABLE table [ * ] RENAME [ COLUMN ] ER">coBLE> TO newcolumn ALTER TABLE table RENAME TO newtable |
le nom d'une table existante à modifier
nom d'une colonne existante ou nouvelle
Type de la nouvelle colonne
nouveau nom pour une colonne existante
nouveau nom pour une table existante
message retourné depuis la colonne ou la table renommée.
message retourné depuis la colonne ajoutée.
message retourné si la table ou la colonne n'est pas disponible.
ALTER TABLE change la définition d'une table existante. Les nouvelles colonnes et leur type sont spécifiés dans le même style et avec les mêmes restrictions que dans CREATE TABLE. La clause RENAME change le nom de la table ou de la colonne sans changer les données contenues dans la table affectée. Ainsi, la table ou la colonne restera du même type et de la même taille après que la commande soit exécutée. Vous devez être propriètaire de la table pour pouvoir changer ce schéma.
Pour ajouter une colonne de type VARCHAR à une table :
ALTER TABLE distributors ADD COLUMN address VARCHAR(30); |
pour renommer une colonne existante :
ALTER TABLE distributors RENAME COLUMN address TO city; |
pour renommer une table existante :
ALTER TABLE distributors RENAME TO suppliers; |
ALTER TABLE/RENAME est une extension du langage Postgres.
SQL92 spécifie quelques fonctionnalités additionelles pour la commande ALTER TABLE qui ne sont pas encore directement supportées par Postgres.
ALTER TABLE table ALTER [ COLUMN ] column SET DEFAULT default ALTER TABLE table ALTER [ COLUMN ] column ADD [ CONSTRAINT >constrain> ] table-constraint |
place la valeur par défaut ou la contrainte spécifiée dans la définition de colonne de la table. Voir CREATE TABLE pour la syntaxe par défaut et les clauses contrainte-table. Si une clause par défaut existe déja, elle sera remplacée par la nouvelle définition. Si certaines contraintes sur cette colonne existent déja, elles seront retenues en utilisant le AND booléen avec la nouvelle contrainte.
La mise en place de nouvelles contraintes default sur une colonne existante, la table doit être recréée et relancée :
CREATE TABLE temp AS SELECT * FROM distributors; DROP TABLE distributors; CREATE TABLE distributors ( did DECIMAL(3) DEFAULT 1, name VARCHAR(40) NOT NULL, city VARCHAR(30) ); INSERT INTO distributors SELECT * FROM temp; DROP TABLE temp; |
ALTER TABLE table DROP DEFAULT default ALTER TABLE table DROP CONSTRAINT constraint { RESTRICT | CASCADE } |
supprime la valeur default spécifiée par défaut ou la règle spécifiée par contrainte dans la définition de la table. Si RESTRICT est spécifié, seulement une contrainte avec des contraintes non dépendantes peut être détruite. Si CASCADE est spécifié, toutes les contraintes dépendantes de cette contrainte sont aussi supprimées.
Pour effacer une valeur default ou des contraintes sur une colonne existante, la table doit être recréée et relancée :
CREATE TABLE temp AS SELECT * FROM distributors; DROP TABLE distributors; CREATE TABLE distributors AS SELECT * FROM temp; DROP TABLE temp; |
ALTER TABLE table DROP [ COLUMN ] column { RESTRICT | CASCADE } |
supprime une colonne d'une table. Si RESTRICT est spécifié seulement une colonne avec des objets non dépendants peut être détruite. Si CASCADE est spécifié, tous les objets qui sont dépendants de cette colonne sont aussi supprimés.
Pour effacer une colonne existante la table doit être recréée et relancée :
CREATE TABLE temp AS SELECT did, city FROM distributors; DROP TABLE distributors; CREATE TABLE distributors ( did DECIMAL(3) DEFAULT 1, name VARCHAR(40) NOT NULL, ); INSERT INTO distributors SELECT * FROM temp; DROP TABLE temp; |