© Éditions Eyrolles
75
chapitre n° 3
Évolution d’un schéma
Concernant tout schéma, il faut éliminer d’abord les contraintes de clé étrangère des tables
« fils » puis « père » puis les contraintes de clé primaire. Il suffit, pour éviter toute incohérence,
de détruire les contraintes dans l’ordre inverse d’apparition dans le script de création.
Désactivation des contraintes
La désactivation des contraintes référentielles peut être intéressante pour accélérer des procédures de chargement d’importation et d’exportation massives de données externes. Ce mécanisme améliore aussi les performances de programmes batchs qui ne modifient pas des
données concernées par l’intégrité référentielle, ou pour lesquelles on vérifie la cohérence de
la base à la fin. En effet les index ne sont pas mis à jour pour chaque insertion ou modification,
et aucun ordre n’est requis pour insérer ou supprimer des enregistrements.
Syntaxe
L’instruction SET
FOREIGN_KEY_CHECKS=0 permet de désactiver temporairement
(jusqu’à la réactivation) toutes les contraintes référentielles d’une base.
N’essayez pas de désactiver l’intégrité référentielle avec l’option DISABLE KEYS de l’instruction ALTER TABLE. Cette option concerne les tables MyISAM et spécifie seulement de ne pas
mettre à jour les index non uniques.
Exemple
En considérant l’exemple suivant, désactivons les contraintes d’intégrité référentielle et
tentons d’insérer des enregistrements ne respectant aucune contrainte (d’intégrité référentielle
et autres).
Figure 3-6 Après suppression de contraintes
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
NULL
75
chapitre n° 3
Évolution d’un schéma
Concernant tout schéma, il faut éliminer d’abord les contraintes de clé étrangère des tables
« fils » puis « père » puis les contraintes de clé primaire. Il suffit, pour éviter toute incohérence,
de détruire les contraintes dans l’ordre inverse d’apparition dans le script de création.
Désactivation des contraintes
La désactivation des contraintes référentielles peut être intéressante pour accélérer des procédures de chargement d’importation et d’exportation massives de données externes. Ce mécanisme améliore aussi les performances de programmes batchs qui ne modifient pas des
données concernées par l’intégrité référentielle, ou pour lesquelles on vérifie la cohérence de
la base à la fin. En effet les index ne sont pas mis à jour pour chaque insertion ou modification,
et aucun ordre n’est requis pour insérer ou supprimer des enregistrements.
Syntaxe
L’instruction SET
FOREIGN_KEY_CHECKS=0 permet de désactiver temporairement
(jusqu’à la réactivation) toutes les contraintes référentielles d’une base.
N’essayez pas de désactiver l’intégrité référentielle avec l’option DISABLE KEYS de l’instruction ALTER TABLE. Cette option concerne les tables MyISAM et spécifie seulement de ne pas
mettre à jour les index non uniques.
Exemple
En considérant l’exemple suivant, désactivons les contraintes d’intégrité référentielle et
tentons d’insérer des enregistrements ne respectant aucune contrainte (d’intégrité référentielle
et autres).
Figure 3-6 Après suppression de contraintes
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
NULL
