Bonjour,
Je suis face a un petit soucis de base de données et j'en appelle à vous pour me dire ce qui ne va pas.
En fait le soucis se situe dans l'établissement de la liaison (ou plutôt des liaisons) entre 2 tables avec mise à jour en cascade et suppression en cascade.
Mais comme toujours un bon code vaux mieux que beaucoup d'explications :
Je créer mes 2 tables
Code sql : 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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39 CREATE TABLE [dbo].[tblLieu] ( [ID] [BIGINT] IDENTITY -- Identité locale de la table , [nvcLabel] [NVARCHAR](250) -- Dénomination du lieu CONSTRAINT [prkLieu] PRIMARY KEY CLUSTERED ( [ID] ASC ) ) ON [PRIMARY] GO CREATE TABLE [dbo].[tblTrajet] ( [ID] [BIGINT] IDENTITY -- Identité locale de la table , [nvcLabel] [typLabel] -- Dénomination du voyage , [CdeLieuDepart] [BIGINT] -- Lieu de début du trajet , [CdeLieuArrivee] [BIGINT] -- Lieu d'arrivée du trajet CONSTRAINT [prkTrajet] PRIMARY KEY CLUSTERED ( [ID] ASC ) ) ON [PRIMARY] GO ALTER TABLE [dbo].[tblTrajet] WITH CHECK ADD CONSTRAINT [frkTrajet_LieuDepart] FOREIGN KEY([CdeLieuDepart]) REFERENCES [dbo].[tblLieu] ([ID]) ON UPDATE CASCADE ON DELETE CASCADE; GO ALTER TABLE [dbo].[tblTrajet] WITH CHECK ADD CONSTRAINT [frktblTrajet_LieuArrivee] FOREIGN KEY([CdeLieuArrivee]) REFERENCES [dbo].[tblLieu] ([ID]) ON UPDATE CASCADE ON DELETE CASCADE; GO
Et j'ai le message suivant :
Msg*1785, Niveau*16, État*0, Ligne*31
Introducing FOREIGN KEY constraint 'frktblTrajet_LieuArrivee' on table 'tblTrajet' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
Si j'inverse les 2 déclaration de liens, c'est toujours le second qui pose problème.
Pourquoi cela me fait-il cela car je ne comprends pas pourquoi ce n'est pas possible de faire 2 liens avec mise à jour et suppression en cascade tel que décrit.
Comment procéder pour assurer cette fonctionnalité ?
Merci d'avance de vous pencher sur mon cas...
Partager