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 arrivera

  • Ensuite 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