Documentation PostgreSQL 7.4.29 | ||||
---|---|---|---|---|
Pr�c�dent | Arri�re rapide | Chapitre 5. D�finition des donn�es | Avance rapide | Suivant |
Quand on cr�e une table et qu'on se rend compte qu'on a fait une erreur ou que les besoins de l'application ont chang�s, on peut alors effacer la table et la recr�er. Mais ceci n'est pas pratique si la table contient d�j� des donn�es ou si la table est r�f�renc�e par d'autres objets de la base de donn�es (une contrainte de cl� �trang�re). Par cons�quent, PostgreSQL offre une s�rie de commandes permettant de modifier une table existante.
Vous pouvez
ajouter des colonnes,
retirer des colonnes,
ajouter des contraintes,
retirer des contraintes,
modifier les valeurs par d�faut,
renommer des colonnes,
renommer des tables.
Toutes ces actions sont faites en utilisant la commande ALTER TABLE.
Pour ajouter une colonne, utilisez cette commande:
ALTER TABLE produits ADD COLUMN description text;
La nouvelle colonne sera cr�e avec des valeurs nulles dans les rang�es existantes de la table.
Vous pouvez aussi d�finir une constante sur la colonne au m�me moment en utilisant la syntaxe habituelle:
ALTER TABLE produits ADD COLUMN description text CHECK (description <> '');
Une nouvelle colonne ne peut pas avoir une contrainte non nulle puisqu'elle ne contiendra initialement que des valeurs nulles. Mais vous pouvez ajouter une contrainte non nulle apr�s coup. Vous ne pouvez pas non plus d�finir une valeur A,r d�faut pour une nouvelle colonne. D'apr�s le standard SQL, ceci devrait remplir les rang�es existantes des nouvelles colonnes avec la valeur par d�faut, ce qui n'est pas encore impl�ment�. Mais on peut d�finir la valeur par d�faut de la colonne plus tard.
Pour retirer une colonne, utilisez cette commande:
ALTER TABLE produits DROP COLUMN description;
Pour ajouter une contrainte, la syntaxe de contrainte de table est utilis�e. Par exemple:
ALTER TABLE produits ADD CHECK (name <> ''); ALTER TABLE produits ADD CONSTRAINT some_name UNIQUE (no_produit); ALTER TABLE produits ADD FOREIGN KEY (product_group_id) REFERENCES product_groups;
Pour ajouter une contrainte non nulle, qui ne peut pas �tre �crite sous forme d'une contrainte de table, utilisez cette syntaxe:
ALTER TABLE produits ALTER COLUMN no_produit SET NOT NULL;
La contrainte sera v�rifi�e imm�diatement, donc les donn�es de la table doivent remplir la contrainte avant qu'elle soit ajout�e.
Pour retirer la contrainte, il faut conna�tre son nom. Si vous lui avez donn� un nom, alors c'est facile. Sinon, le syst�me a attribu� un nom g�n�r� que vous devez d�couvrir. La commande \d tablename de psql peut �tre utile ici; d'autres interfaces peuvent aussi donner le moyen d'examiner les d�tails de table. Alors, la commande est:
ALTER TABLE produits DROP CONSTRAINT some_name;
(Si vous traitez avec un nom de contrainte g�n�r� comme $2, n'oubliez pas qu'il faudra l'entourer de guillemets double pour en faire un identifiant valable.)
�a marche de la m�me mani�re pour toutes les types de contrainte sauf les contraintes non nulles. Pour retirer une contrainte non nulle, utilisez
ALTER TABLE produits ALTER COLUMN no_produit DROP NOT NULL;
(Rappelez vous que les contraintes non nulles n'ont pas de noms.)
Pour mettre une nouvelle valeur par d�faut sur une colonne, utilisez une commande comme celle-ci:
ALTER TABLE produits ALTER COLUMN prix SET DEFAULT 7.77;
Pour retirer toute valeur par d�faut, utilisez
ALTER TABLE produits ALTER COLUMN prix DROP DEFAULT;
Ceci est �quivalent � mettre une valeur par d�faut nulle, au moins dans PostgreSQL. En cons�quence, ce n'est pas une erreur de retirer une valeur par d�faut qui n'a pas �t� d�finie car la valeur nulle est la valeur par d�faut implicite.
Pour renommer une colonne:
ALTER TABLE produits RENAME COLUMN no_produit TO numero_produit;
Pr�c�dent | Sommaire | Suivant |
H�ritage | Niveau sup�rieur | Privil�ges |