© Éditions Eyrolles
77
chapitre n° 3
Évolution d’un schéma
Réactivation des contraintes
L’instruction SET FOREIGN_KEY_CHECKS=1 permet de réactiver toutes les contraintes
référentielles d’une base.
N’essayez pas de désactiver l’intégrité référentielle avec l’option ENABLE KEYS de l’instruction
ALTER TABLE. Cette option concerne les tables MyISAM et spécifie de mettre à jour les index
non uniques.
Syntaxe
La réactivation totale de l’intégrité référentielle de la base se programme ainsi :
mysql> SET FOREIGN_KEY_CHECKS=1;
L’intégrité est assurée de nouveau mais ne concerne que les mises à jour à venir (ajouts
d’enregistrements, modifications de colonnes et suppressions d’enregistrements). Les éventuelles données présentes dans les tables qui ne vérifient pas l’intégrité sont toujours en base !
Récupération de données erronées
Il n’existe pas pour l’heure de méthode de récupération automatique comme Oracle le
propose, par exemple, avec la directive EXCEPTIONS INTO de l’instruction ALTER TABLE.
En conséquence, il faut programmer des requêtes d’extraction (étudiées au chapitre 4) qui
permettent des recherches d’enregistrements sous critères.
Le tableau suivant décrit les deux requêtes à programmer afin d’extraire les enregistrements
posant problème. Ici nous extrayons les avions qui référencent une compagnie inexistante, et
les affrètements qui référencent une compagnie inexistante ou un avion inexistant. Une fois
Figure 3-8 Après la désactivation des contraintes référentielles
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
82
AF
Toto
2005-05-13
0
GTI
F-WTSS
2005-11-07
10
GTI
Toto
2005-11-07
40
Avion
immat
typeAvion nbHVol
proprio
F-WTSS
Concorde
6570
SING
F-GLFS
TB-22
500
Toto
Précédent

- 99/418

Suivant