© Éditions Eyrolles
39
chapitre n° 2
Manipulation des données
Plusieurs enregistrements
Le script suivant ajoute trois nouvelles compagnies en une seule instruction INSERT .
INSERT INTO Compagnie VALUES
('LUFT',9,'Salas','Munich','Luftansa'),
('QUAN',1,'Kangouroo','Sydney','Quantas'),
('SNCM',3,'P. Paoli','Bastia','Corse Air');
Ne pas respecter des contraintes
Insérons des enregistrements dans la table Pilote , qui ne respectent pas des contraintes. Le tableau
suivant décrit les messages renvoyés pour chaque erreur (le nom de la contrainte apparaît dans
chaque message, les valeurs erronées sont notées en gras). La première erreur vient de la clé primaire,
la seconde de l’unicité du nom. La troisième erreur signifie que la clé étrangère référence une clé
primaire absente (ici une compagnie inexistante). Nous reviendrons sur ce dernier problème dans la
section Erreur ! Source du renvoi introuvable . La dernière concerne la contrainte en ligne NOT NULL
Figure 2-1 Table après les insertions
Compagnie
comp
nrue rue
ville
nomComp
SING
7
Camparols
Singapour
Singapore AL
AF
10
Gambetta
Paris
Air France
AN1
Hoche
Blagnac
Air Nul1
AC
8
Champs Elysées
Paris
Castanet Air
AN2
Foch
Blagnac
Air Nul2
Valeur par défaut
Valeur NULL
Tableau 2-3 Insertions
Insertions vérifiant les contraintes
Insertions ne vérifiant pas les contraintes
INSERT INTO Pilote VALUES
('PL-1', 'Louise Ente', 450, 'AF');
mysql> INSERT INTO Pilote VALUES( 'PL-1' ,
'Amélie Sulpice', 100, 'AF');
ERROR 1062 (23000): Duplicate entry 'PL-1' for
key 1
INSERT INTO Pilote VALUES
('PL-2', 'Jules Ente ', 900, 'AF');
mysql> INSERT INTO Pilote VALUES ('PL-4',
'Louise Ente' , 450, 'AF');
ERROR 1062 (23000): Duplicate entry 'Louise
Ente' for key 2
INSERT INTO Pilote VALUES
('PL-3', 'Paul Soutou', 1000, 'SING');
mysql> INSERT INTO Pilote VALUES ('PL-5',
'Thomas Sulpice', 500, 'TOTO' );
ERROR 1452 (23000): Cannot add or update a
child row: a foreign key constraint fails
(`bdsoutou/pilote`, CONSTRAINT
`fk_Pil_compa_Comp` FOREIGN KEY (`compa`)
REFERENCES `compagnie` (`comp`))
mysql> INSERT INTO Pilote VALUES ('PL-6',
NULL , 100, 'AF');
ERROR 1048 (23000): Column 'nom' cannot be null
Web
Précédent

- 61/418

Suivant