Partie I
SQL de base
76
© Éditions Eyrolles
On remarque bien que seules les clés étrangères ne sont plus vérifiées. Toute autre contrainte
(UNIQUE, PRIMARY KEY et NOT NULL) reste active. L’état de la base est désormais comme
suit.
Bien qu’il semble incohérent de réactiver les contraintes sans s’occuper au préalable des
valeurs ne respectant pas l’intégrité référentielle (données notées en gras), nous verrons qu’il
est possible de le faire.
Figure 3-7 Avant la désactivation 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
Avion
immat
typeAvion
nbHVol proprio
F-WTSS
Concorde
6570
SING
referenced / parent
referenced / parent
dependent / child
dependent / child NOT NULL
UNIQUE
Tableau 3-3 Insertions après la désactivation de l’intégrité référentielle
Instructions valides
Instructions non valides
mysql> SET FOREIGN_KEY_CHECKS=0;
mysql> INSERT INTO Avion VALUES
(
, 'TB-22', 500, 'Toto');
Query OK, 1 row affected (0.04 sec)
mysql> INSERT INTO Avion VALUES
('Bidon1', 'TB-21', 1000, 'AF');
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO Affreter VALUES
('AF', 'Toto', '2005-05-13', 0);
Query OK, 1 row affected (0.10 sec)
mysql> INSERT INTO Affreter VALUES
('GTI', 'F-WTSS', '2005-11-07',10);
Query OK, 1 row affected (0.02 sec)
mysql> INSERT INTO Affreter VALUES
('GTI', 'Toto', '2005-11-07',40);
Query OK, 1 row affected (0.03 sec)
mysql> INSERT INTO Compagnie VALUES
('GTR', 1, 'Brassens', 'Blagnac',
);
ERROR 1062 (23000): Duplicate entry 'Air
France' for key 2
mysql> INSERT INTO Avion VALUES
('Bidon1', 'TB-20', 2000, NULL);
ERROR 1048 (23000): Column 'proprio'
cannot be null
mysql> INSERT INTO Avion VALUES
(
, 'TB-21', 1000, 'AF');
ERROR 1062 (23000): Duplicate entry 'FGLFS' for key 1
Web
'F-GLFS'
'Air
France'
'F-GLFS'
Précédent

- 98/418

Suivant