Bonjour,
J'ai une table equipement ou des équipements doivent pouvoir faire
référence à équipements maîtres. Quand on modifie l'ID d'un équipement maître
il faudrait modifier automatiquement la relation dans l'équipement enfant.
Mais quand j'ajoute "on update cascade" dans la relation SQL Server 2005 me
donne le message suivant
Introducing FOREIGN KEY constraint 'EquipmentMaster' on table 'Equipment'
may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON
UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
CREATE TABLE "dbo"."Equipment"
(
"ID" IDType NOT NULL,
"IDEqMaster" IDType NULL,
PRIMARY KEY ("ID")
)
go
ALTER TABLE "dbo"."Equipment"
ADD CONSTRAINT "EquipmentMaster" FOREIGN KEY ("IDEqMaster")
REFERENCES "dbo"."Equipment" ("ID") on update cascade
go
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Christian Robert
Bonjour,
Du fait que vous utilisez des relations types parent-enfant nécessairement, il y a un risque de récursivité, SQL Server ne maitrise pas ce genre de comportement et limite celà à 32 niveau maxi, cependant dans le cas d'une mise à jour en cascade celà est interdit...
Résultat il vous faudra écrire votre propre Trigger si vous souhaitez faire ce genre de mise à jour et à l'aide d'une boucle WHILE par exemple.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Alaino" a écrit :
Bonjour, J'ai une table equipement ou des équipements doivent pouvoir faire référence à équipements maîtres. Quand on modifie l'ID d'un équipement maître il faudrait modifier automatiquement la relation dans l'équipement enfant. Mais quand j'ajoute "on update cascade" dans la relation SQL Server 2005 me donne le message suivant
Introducing FOREIGN KEY constraint 'EquipmentMaster' on table 'Equipment' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
CREATE TABLE "dbo"."Equipment" ( "ID" IDType NOT NULL, "IDEqMaster" IDType NULL, PRIMARY KEY ("ID") ) go
ALTER TABLE "dbo"."Equipment" ADD CONSTRAINT "EquipmentMaster" FOREIGN KEY ("IDEqMaster") REFERENCES "dbo"."Equipment" ("ID") on update cascade go
Bonjour,
Du fait que vous utilisez des relations types parent-enfant nécessairement,
il y a un risque de récursivité, SQL Server ne maitrise pas ce genre de
comportement et limite celà à 32 niveau maxi, cependant dans le cas d'une
mise à jour en cascade celà est interdit...
Résultat il vous faudra écrire votre propre Trigger si vous souhaitez faire
ce genre de mise à jour et à l'aide d'une boucle WHILE par exemple.
--
Cordialement
Christian Robert
Consultant - Formateur chez Winwise
MCT - MCDBA - MCSD
MCTS & MCITP SQL Server 2005
"Alaino" a écrit :
Bonjour,
J'ai une table equipement ou des équipements doivent pouvoir faire
référence à équipements maîtres. Quand on modifie l'ID d'un équipement maître
il faudrait modifier automatiquement la relation dans l'équipement enfant.
Mais quand j'ajoute "on update cascade" dans la relation SQL Server 2005 me
donne le message suivant
Introducing FOREIGN KEY constraint 'EquipmentMaster' on table 'Equipment'
may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON
UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
CREATE TABLE "dbo"."Equipment"
(
"ID" IDType NOT NULL,
"IDEqMaster" IDType NULL,
PRIMARY KEY ("ID")
)
go
ALTER TABLE "dbo"."Equipment"
ADD CONSTRAINT "EquipmentMaster" FOREIGN KEY ("IDEqMaster")
REFERENCES "dbo"."Equipment" ("ID") on update cascade
go
Du fait que vous utilisez des relations types parent-enfant nécessairement, il y a un risque de récursivité, SQL Server ne maitrise pas ce genre de comportement et limite celà à 32 niveau maxi, cependant dans le cas d'une mise à jour en cascade celà est interdit...
Résultat il vous faudra écrire votre propre Trigger si vous souhaitez faire ce genre de mise à jour et à l'aide d'une boucle WHILE par exemple.
-- Cordialement
Christian Robert Consultant - Formateur chez Winwise MCT - MCDBA - MCSD MCTS & MCITP SQL Server 2005
"Alaino" a écrit :
Bonjour, J'ai une table equipement ou des équipements doivent pouvoir faire référence à équipements maîtres. Quand on modifie l'ID d'un équipement maître il faudrait modifier automatiquement la relation dans l'équipement enfant. Mais quand j'ajoute "on update cascade" dans la relation SQL Server 2005 me donne le message suivant
Introducing FOREIGN KEY constraint 'EquipmentMaster' on table 'Equipment' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints.
CREATE TABLE "dbo"."Equipment" ( "ID" IDType NOT NULL, "IDEqMaster" IDType NULL, PRIMARY KEY ("ID") ) go
ALTER TABLE "dbo"."Equipment" ADD CONSTRAINT "EquipmentMaster" FOREIGN KEY ("IDEqMaster") REFERENCES "dbo"."Equipment" ("ID") on update cascade go