salut à tous,
j'ai une base de donnée avec 4 tables (qui sont plus bas) et j'ai un problème lorsque je veux faire des ON DELETE CASCADE et ON UPDATE CASCADE sur 2 de mes champ. Voilà les tables (en gros):
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
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
/* ---TABLE : T_AR_AREA------------------------------------------------------ */
 
CREATE TABLE [T_AR_AREA] (
	[AR_ID] [int] IDENTITY (1, 1) NOT NULL ,
	[LA_ID] [int] NOT NULL ,
	[AR_ID_PARENT] [int] NULL ,
	[AR_CENTER] [float] NULL ,
) ON [PRIMARY]
 
ALTER TABLE [T_AR_AREA] WITH NOCHECK ADD CONSTRAINT [PK_T_AR_AREA_1__52] PRIMARY KEY  NONCLUSTERED ([AR_ID])  ON [PRIMARY] 
 
/* ---TABLE : T_LA_LAYER----------------------------------------------------- */
 
CREATE TABLE [T_LA_LAYER] (
	[LA_ID] [int] IDENTITY (1, 1) NOT NULL ,
	[LA_NAME] [varchar] (255) COLLATE French_CI_AS NULL ,
) ON [PRIMARY]
 
ALTER TABLE [T_LA_LAYER] WITH NOCHECK ADD CONSTRAINT [PK_T_LA_LAYER_1__52] PRIMARY KEY  NONCLUSTERED([LA_ID])  ON [PRIMARY] 
 
/* ---TABLE : T_AT_ATTRIBUTE------------------------------------------------- */
 
CREATE TABLE [T_AT_ATTRIBUTE] (
	[AT_ID] [int] IDENTITY (1, 1) NOT NULL ,
	[LA_ID] [int] NOT NULL,
	[AT_NAME] [varchar] (255) COLLATE French_CI_AS NULL ,
	[AT_TYPE] [varchar] (255) COLLATE French_CI_AS NULL ,
) ON [PRIMARY]
 
ALTER TABLE [T_AT_ATTRIBUTE] WITH NOCHECK ADD CONSTRAINT [PK_T_AT_ATTRIBUTE_1__52] PRIMARY KEY  NONCLUSTERED ([AT_ID])  ON [PRIMARY] 
 
/* ---TABLE : T_AL_ATTRIBUTES_LIST------------------------------------------- */
 
CREATE TABLE [T_AL_ATTRIBUTES_LIST] (
	[AT_ID] [int] NOT NULL ,
	[AR_ID] [int] NOT NULL ,
	[AL_VALUE] [varchar] (255) COLLATE French_CI_AS NULL ,
)
 
/* ---ADD FOREIGN KEYS------------------------------------------------------- */
 
/* -------TABLE [T_AT_ATTRIBUTE]--------------------------------------------- */
 
ALTER TABLE [T_AT_ATTRIBUTE] ADD FOREIGN KEY ([LA_ID]) REFERENCES [T_LA_LAYER] ([LA_ID]) ON DELETE CASCADE ON UPDATE CASCADE 
 
/* -------TABLE [T_AR_AREA]-------------------------------------------------- */
 
ALTER TABLE [T_AR_AREA] ADD FOREIGN KEY ([LA_ID]) REFERENCES [T_LA_LAYER] ([LA_ID]) ON DELETE CASCADE ON UPDATE CASCADE 
 
ALTER TABLE [T_AR_AREA] ADD FOREIGN KEY ([AR_ID_PARENT]) REFERENCES [T_AR_AREA] ([AR_ID])
 
/* -------TABLE [T_AL_ATTRIBUTES_LIST]--------------------------------------- */
 
ALTER TABLE [T_AL_ATTRIBUTES_LIST] ADD FOREIGN KEY ([AT_ID]) REFERENCES [T_AT_ATTRIBUTE] ([AT_ID]) ON DELETE CASCADE ON UPDATE CASCADE 
 
ALTER TABLE [T_AL_ATTRIBUTES_LIST] ADD FOREIGN KEY ([AR_ID]) REFERENCES [T_AR_AREA] ([AR_ID])
le problème c'est que si je rajoute ON DELETE CASCADE ON UPDATE CASCADE à AR_ID_PARENT ou à la seconde déclaration de clé étrangère de la table T_AL_ATTRIBUTES_LIST (c'est selon l'ordre dans lequel je les place) j'ai cet erreur :
L'introduction d'une contrainte de clé étrangère 'FK__T_AL_ATTR__AR_ID__07F6335A' dans la table 'T_AL_ATTRIBUTES_LIST' peut provoquer des cycles ou des accès en cascade multiples. Spécifiez ON DELETE NO ACTION ou ON UPDATE NO ACTION ou modifiez les autres contraintes de clés étrangères
Je ne vois vraiment pas d'où provient l'erreur sachant que toutes les autres déclaration de ON DELETE CASCADE ON UPDATE CASCADE fonctionne.
Merci d'avance à tous ceux prêteront attention à ce sujet