© Éditions Eyrolles
73
chapitre n° 3
Évolution d’un schéma
Pour que l’ajout ou la modification d’une contrainte soient possibles, il faut que les données
présentes dans la table concernée ou référencée respectent la nouvelle contrainte.
Les tables contiennent à présent les contraintes suivantes :
Suppression de contraintes
Il n’existe pas encore l’option DROP CONSTRAINT à l’instruction ALTER TABLE pour
supprimer une contrainte de nom donnée (peut-être parce que les contraintes CHECK ne sont
pas encore considérées, et car la prise en compte des contraintes a été étalée au fil des versions
successives de MySQL). Il faut donc utiliser une directive différente de l’instruction ALTER
TABLE pour supprimer chaque type de contrainte.
Contrainte NOT NULL
Il faut utiliser la directive MODIFY de l’instruction ALTER TABLE pour supprimer une
contrainte NOT NULL existant sur une colonne. Dans notre exemple, détruisons la contrainte
NOT NULL de la clé étrangère proprio dans la table Avion.
ALTER TABLE Avion MODIFY proprio CHAR(4) NULL;
Contrainte UNIQUE
Il faut utiliser la directive DROP INDEX de l’instruction ALTER TABLE pour supprimer une
contrainte d’unicité. Dans notre exemple, effaçons la contrainte portant sur le nom de la
compagnie. L’index est également détruit.
ALTER TABLE Compagnie DROP INDEX un_nomC;
Figure 3-5 Après ajout de contraintes
Web
Compagnie
comp
nrue rue
ville
nomComp
AF
10
Gambetta
Paris
Air France
SING
7
Camparols
Singapour
Singapore AL
Affreter
compAff
immat
dateAff
nbPax
AF
F-WTSS 2003-05-13
85
SING
F-GAFU 2003-02-05
155
AF
F-WTSS 2003-05-15
82
Avion
immat
typeAvion
nbHVol proprio
F-WTSS
Concorde
6570
SING
F-GAFU
A320
3500
AF
F-GLFS
TB-20
2000
SING
referenced / parent
referenced / parent
dependent / child
dependent / child NOT NULL
73
chapitre n° 3
Évolution d’un schéma
Pour que l’ajout ou la modification d’une contrainte soient possibles, il faut que les données
présentes dans la table concernée ou référencée respectent la nouvelle contrainte.
Les tables contiennent à présent les contraintes suivantes :
Suppression de contraintes
Il n’existe pas encore l’option DROP CONSTRAINT à l’instruction ALTER TABLE pour
supprimer une contrainte de nom donnée (peut-être parce que les contraintes CHECK ne sont
pas encore considérées, et car la prise en compte des contraintes a été étalée au fil des versions
successives de MySQL). Il faut donc utiliser une directive différente de l’instruction ALTER
TABLE pour supprimer chaque type de contrainte.
Contrainte NOT NULL
Il faut utiliser la directive MODIFY de l’instruction ALTER TABLE pour supprimer une
contrainte NOT NULL existant sur une colonne. Dans notre exemple, détruisons la contrainte
NOT NULL de la clé étrangère proprio dans la table Avion.
ALTER TABLE Avion MODIFY proprio CHAR(4) NULL;
Contrainte UNIQUE
Il faut utiliser la directive DROP INDEX de l’instruction ALTER TABLE pour supprimer une
contrainte d’unicité. Dans notre exemple, effaçons la contrainte portant sur le nom de la
compagnie. L’index est également détruit.
ALTER TABLE Compagnie DROP INDEX un_nomC;
Figure 3-5 Après ajout de contraintes
Web
Compagnie
comp
nrue rue
ville
nomComp
AF
10
Gambetta
Paris
Air France
SING
7
Camparols
Singapour
Singapore AL
Affreter
compAff
immat
dateAff
nbPax
AF
F-WTSS 2003-05-13
85
SING
F-GAFU 2003-02-05
155
AF
F-WTSS 2003-05-15
82
Avion
immat
typeAvion
nbHVol proprio
F-WTSS
Concorde
6570
SING
F-GAFU
A320
3500
AF
F-GLFS
TB-20
2000
SING
referenced / parent
referenced / parent
dependent / child
dependent / child NOT NULL
