contraintes SQL server (clé étrangère)
-
mardi 12 juillet 2011 14:44
Bonjour à tous,
je teste un schéma de base Oracle (opérationnel) sur SQL Server 2008 R2, mais j'ai des problèmes sur certaines relations:
Exemple 1:
TABLE critere (id PRIMARY KEY)
TABLE produit (id PRIMARY KEY, id_critere FOREIGN KEY) avec ON UPDATE CASCADE ON DELETE NO ACTION
TABLE entrepot (id PRIMARY KEY, id_critere FOREIGN KEY) avec ON UPDATE CASCADE ON DELETE NO ACTION
TABLE fournisseur ((id PRIMARY KEY, id_critere FOREIGN KEY) avec ON UPDATE CASCADE ON DELETE NO ACTION
mais une fois la première clé étrangère de la table produit (dans l'ordre) les deux autres crash
MSG ERREUR
Introducing FOREIGN KEY constraint 'fk_fournisseur_critere' on table 'fournisseur' may cause cycles or multiple cascade paths. Specify ON DELETE NO ACTION or ON UPDATE NO ACTION, or modify other FOREIGN KEY constraints. Could not create constraint.
même message pour la table entrepot.
Exemple 2: même chose pour cette config
TABLE unite( id PRIMARY KEY)
TABLE descripteur ( (id PRIMARY KEY, id_unite_br FOREIGN KEY, , id_unite_cd FOREIGN KEY) avec ON UPDATE CASCADE ON DELETE NO ACTION pour les deux clés
Cordialement
Toutes les réponses
-
mardi 12 juillet 2011 15:59Bonjour,SQL Server ne sait pas gérer les références circulaires.La seule méthode que je connais est de spécifier NO ACTION sur l'une desréférences et d'implémenter un trigger pour assurer l'intégritéréférentielle.
Fred -
mercredi 13 juillet 2011 07:41
Merci Fred, effectivement il fallait que je mette ON UPDATE NO ACTION ON DELETE NO ACTION pour que le schéma soit valide.
Maintenant, assurer l'intégrité référentielle avec des trigger n'est pas toujours évident mais je n'ai vraiment le choix.
Merci encore.
Cordialement- Marqué comme réponse IghzerA mercredi 13 juillet 2011 07:42

