Vous êtes sur la page 1sur 4

TP2

1)
create database AIRDB;
2)
insert into pilote values (1,'TAHRI','AMAR','1981-07-11',943), (2,'SENJAK','TOUFIK','1979-03-
30',3750);
insert into avion values ('B737-51','BOING','B737','2012-03-30',19562), ('A300-
52','AIRBUS','A300','2001-11-10',26633);
insert into piloter values (1,'B737-51'), (2,'A300-52');
insert into vols values ('AH1','PARIS','2015-04-16','B737-51',1), ('AH2','TUNIS','2015-04-08','A300-
52',2);
insert into passager values (1,'AKKOUCHE','Yacine','4','AH1'),
(2,'AMAIRI','CHAFIARANIA','1','AH2');
3)
drop table piloter;
4)
alter table Passager(
 add constraint Ck_classe check (classe in ('1','2','3','4'));

5)
insert into pilote values (1,'LASSAS','MOHAMED','1970-12-12',1244);
ERROR 1062 (23000): Duplicate entry ‘1’ for key 1
La valeur de la clé primaire (matricule = 1) est déjà existante dans la table pilote.
Solution :
Il faut affecter un matricule ≠ 1 et bien sûr ≠ 2

6)
insert into vols values ('AH3','CAIRE','2015-04-13','A320-53',1);
ERROR 1452 (23000):Cannot add or update a child row: a foreign key constraint fails (`airdb/vols`,
CONSTRAINT `fk_cd_avion` FOREIGN KEY (`cd_avion`) REFERENCES `aviont` (`code`))
(cd_avion = 'A320-53') n’existe pas dans la table mère avion Contrainte référentielle non respectée
Solutions :
Il faut affecter un cd_avion qui existe déjà dans la table « avion » (cd_avion = 'B737-51' ou cd_avion
= 'A320-52'
7)
insert into Passager values (33,'YAICH','SARA','5','AH2');
ERROR 3819 (HY000): Check constraint ‘CK_classe’ is violated.
la valeur ‘5’ dans la colonne classe de la table Passager n’est pas acceptée, car dans la question ‘4’, la
contrainte CHECK a été ajoutée pour la colonne ‘classe’ qui n’accepte désormais que les valeurs entre
1 et 4.
Solutions :
il faut supprimer l’ancienne contrainte et créer une autre qui accepte plus de valeurs.
ALTER table Passager DROP constraintCK_classe ;
ALTER table Passager ADD constraintCK_classe CHECK (classe in (‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘6’, ‘7’,
‘8’, ‘9’,
‘10’) ;

8)
update passager
 set classe = '2'
 where num_passage = 1;
9)
update vols
 set mt_pilote = 5
 where num_vol = 'AH1';
ERROR 1452 (23000):Cannot add or update a child row: a foreign key constraint fails (`airdb/vols`,
CONSTRAINT `fk_mt_pilote` FOREIGN KEY (`mt_pilote`) REFERENCES `pilote` (`Matricule`))
(mt_pilote = 5) n’existe pas dans la table mère pilote.
Solutions :
Insérer un nouveau tuple dans la table pilote dont matricule = 5 et ensuite modifier le mt_pilote du
vol 'AH1'.

10)
delete from passager
 where num_passager = 2
11)
delete from avion
 where code = 'B737-51';
ERROR 1451 (23000):Cannot delete or update a parent row: a foreign key constraint fails
(`airdb/vols`, CONSTRAINT `fk_cd_avion` FOREIGN KEY (`mt_pilote`) REFERENCES `avion`
(`Code`))
Cette erreur est due à la suppression/modification d’une ligne (un avion dont code = ‘B737-57’) qui
contient une référence utilisée dans une autre table (dans la table « vols », cd_avion = ‘B737-57’).
Solution :
On utilise« ON DELETE CASCADE » pour supprimer toutes les lignes qui référençaient la valeur
supprimée.
Suppression de la contrainte :
ALTER table vols

DROP constraintfk_cd_av;
Création d’une nouvelle contrainte :
ALTER table vols
ADD constraint fk_cd_av

Foreign key (cd_avion) references avion (code) ON DELETE CASCADE;

12)
delete from vols
 where num_vols = 'AH1';
(Le même cas de question 11)
Suppression de la contrainte :

ALTER table passager

DROP constraint fg_n_vol;


Ajout d’une nouvelle contrainte :
ALTER table Passager
ADD constraint fg_n_vol

Foreign key (n_vol) references vols (num_vol) ON DELETE CASCADE;

Vous aimerez peut-être aussi