Bonjour,
J'ai crée une table LOUER, qui est une table de jointure, avec ce script suivant
J'ai bien créé, auparavant, toutes les tables auxquelles il est fait référence dans ce script.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 CREATE TABLE LOUER (id_mbre NVARCHAR(10), id_exempl_dvd NVARCHAR(10), id_dvd_orig NVARCHAR(10), date_loc DATE NOT NULL, date_fin_loc DATE CONSTRAINT LOUER_date_fin_nn NOT NULL , date_lim_loc DATE CONSTRAINT LOUER_date_lim_nn NOT NULL, CONSTRAINT LOUER_id_mem_ex_dvd_pk PRIMARY KEY (id_mbre, id_exempl_dvd, id_dvd_orig), CONSTRAINT LOUER_id_mem_fk FOREIGN KEY(id_mbre) REFERENCES MEMBRE(id_mbre), CONSTRAINT LOUER_id_ex_dvd_orig_fk FOREIGN KEY(id_exempl_dvd, id_dvd_orig)REFERENCES EXEMPLAIRE_DVD(id_exempl_dvd, id_dvd_orig));
Je me suis rendue compte, que le champ date_loc a été oublié au niveau de la clé primaire.
J'ai donc tout d'abord supprimé toutes les contraintes de clé étrangères, comme ceci
Puis ai recrée une contrainte de clé primaire correcte ainsi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 ALTER TABLE LOUER DROP LOUER_id_mem_fk ; ALTER TABLE LOUER DROP LOUER_id_ex_dvd_orig_fk; 1b-ALTER TABLE LOUER DROP LOUER_id_mem_ex_dvd_pk ;
Puis j'ai recrée les contraintes de clés étrangères sur les 4 champs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE LOUER ADD CONSTRAINT LOUER_id_mem_ex_dvd_date_pk PRIMARY KEY(id_mbre, id_exempl_dvd, id_dvd_orig, date_loc);
si la création des contraintes de clés étrangères fonctionne correctement pour ces deux contraintes LOUER_id_ex_dvd_orig_fk et LOUER_date_loc_fk, en revanche, pour la création de la clé primaire LOUER_id_mem_fk, je reçois le message suivant
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 ALTER TABLE LOUER ADD CONSTRAINT LOUER_id_mem_fk FOREIGN KEY(id_mbre)REFERENCES MEMBRE(id_mbre); ALTER TABLE LOUER ADD CONSTRAINT LOUER_id_ex_dvd_orig_fk FOREIGN KEY(id_exempl_dvd, id_dvd_orig) REFERENCES EXEMPLAIRE_DVD(id_exempl_dvd, id_dvd_orig); ALTER TABLE LOUER ADD CONSTRAINT LOUER_date_loc_fk FOREIGN KEY(date_loc)REFERENCES DATE_LOCATION(date_loc);
Il se trouve que j'ai bien supprimé la contrainte de clé étrangère lorsque j'ai lancé la requêteMsg*547, Niveau*16, État*0, Ligne*1
L'instruction ALTER TABLE est en conflit avec la contrainte FOREIGN KEY "LOUER_id_mem_fk". Le conflit s'est produit dans la base de données "GESTION_DVD_2", table "dbo.MEMBRE", column 'id_mbre'.
En pièce jointe, on voit bien que la contrainte id_mem_fk n'existe pas pour la table LOUER.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 ALTER TABLE LOUER DROP LOUER_id_mem_fk ;
pouvez-vous m'expliquer pourquoi je ne parviens pas à créer à nouveau cette contrainte de clé étrangère.
Je vous en remercie beaucoup.
new_wave
Partager