Alter table
Souvent on est amené à modifier le schéma de notre base de données :
suite à une évolution dans notre business
suite Ă des constats aprĂšs l'utilisation de la base
etc.
On n'a pas le choix de supprimer la base et recommencer, il faut la modifier.
Il y a plusieurs interventions possibles.
Dans ce chapitre, on démontre un certain nombre d'opérations possibles. Attention, la syntaxe précis peut changer d'un SGBDR à l'autre.
Supprimer une table
On peut supprimer une table avec drop table
:
drop table film_actor;
Si la table contient des références par clé étrangÚre (d'autres tables qui pointent vers cette table), le drop table
ne sera pas autorisé.
Faites attention Ă bien accorder des bons privilĂšges ! La commande drop
devrait toujours ĂȘtre soigneusement accordĂ©e !
Ajouter une colonne
alter table films add (
release_year int NOT NULL
);
Supprimer une colonne
alter table films drop release_year;
Si la colonne est une clé étrangÚre (d'autres tables qui pointent vers cette table), le drop
ne sera pas autorisé.
Ajouter une contrainte sur une colonne
alter table films
modify column title varchar(256) NOT NULL default "Unknown film";
Si vous avez déjà des données, et ensuite, vous rajoutez une contrainte, si les données existantes ne respectent pas la nouvelle contrainte, la commande va échouer !
Modifier une clé primaire
/* D'abord supprimer la clé primaire existante */
alter table film_actor drop primary key;
/* Ensuite, la rajouter */
alter table film_actor add primary key (film_id, actor_id);
Migrations
Souvent il faut implémenter une modification à une base qui implique aussi une correction des données (pour satisfaire la nouvelle contrainte), ou bien l'enlÚvement temporaire d'une contrainte, et puis sa remise aprÚs l'opération.
Un ensemble dâinstructions SQL qui permettent de changer la structure dâune table ou base s'appelle une migration.
Par exemple :
Un ensemble de requĂȘtes des types
UPDATE
afin de rendre les donnĂ©es conforme Ă la nouvelle contrainte qui arriveraEnsuite la requĂȘte de type
ALTER TABLE
pour imposer la contrainte
N'oubliez pas de sauvegarder votre base de données avant d'exécuter votre migration !
DerniĂšre mise Ă jour