Vous êtes actuellement hors ligne, en attente de reconnexion à Internet.

Message d'erreur 1785 se produit lorsque vous créez une contrainte FOREIGN KEY qui peut provoquer plusieurs chemins en cascade

IMPORTANT : Cet article est issu du système de traduction automatique mis au point par Microsoft (http://support.microsoft.com/gp/mtdetails). Un certain nombre d’articles obtenus par traduction automatique sont en effet mis à votre disposition en complément des articles traduits en langue française par des traducteurs professionnels. Cela vous permet d’avoir accès, dans votre propre langue, à l’ensemble des articles de la base de connaissances rédigés originellement en langue anglaise. Les articles traduits automatiquement ne sont pas toujours parfaits et peuvent comporter des erreurs de vocabulaire, de syntaxe ou de grammaire (probablement semblables aux erreurs que ferait une personne étrangère s’exprimant dans votre langue !). Néanmoins, mis à part ces imperfections, ces articles devraient suffire à vous orienter et à vous aider à résoudre votre problème. Microsoft s’efforce aussi continuellement de faire évoluer son système de traduction automatique.

La version anglaise de cet article est la suivante: 321843
Symptômes
Vous pouvez recevoir le message d'erreur suivant lorsque vous créez une contrainte FOREIGN KEY :
Serveur: Msg 1785, Niveau 16, État 1, ligne 1 présentation FOREIGN KEY contrainte 'fk_two » sur la table 'table2 » peut entraîner cycles ou plusieurs chemins en cascade. Spécifiez ON DELETE aucune ACTION ou sur mise à jour NO ACTION, ou modifier d'autres contraintes FOREIGN KEY. Serveur: Msg 1750, Niveau 16, État 1, ligne 1 peut crée pas de contrainte. Voir les erreurs précédentes.
Cause
Vous recevez ce message d'erreur car dans SQL Server, une table ne peut pas apparaître plusieurs fois dans une liste des tous les en cascade référentielles actions qui sont démarrés par une instruction UPDATE ou DELETE. Par exemple, l'arborescence des actions référentielles en cascade doit possèdent uniquement un chemin d'accès à une table particulière de l'organigramme actions référentielles en cascade.
Contournement
Pour contourner ce problème, ne créez pas une clé étrangère qui crée plusieurs chemins vers une table dans une liste d'actions référentielles en cascade.

Vous pouvez appliquer l'intégrité référentielle de plusieurs manières. L'intégrité référentielle déclarative (DRI) est le moyen plus simple, mais il est également la manière la moins flexible. Si vous devez davantage de flexibilité, mais vous souhaitez toujours un degré élevé d'intégrité, vous pouvez utiliser Déclencheurs.
Plus d'informations
Le code exemple suivant est un exemple d'une tentative de création FOREIGN KEY qui génère la message d'erreur :
Use tempdbgocreate table table1 (user_ID integer not null primary key, user_namechar(50) not null)gocreate table table2 (author_ID integer not null primary key, author_namechar(50) not null, lastModifiedBy integer not null, addedby integer notnull)goalter table table2 add constraint fk_one foreign key (lastModifiedby)references table1 (user_ID) on delete cascade on update cascadegoalter table table2 add constraint fk_two foreign key (addedby)references table1(user_ID) on delete no action on update cascadego--this fails with the error because it provides a second cascading path to table2.alter table table2 add constraint fk_two foreign key (addedby)references table1 (user_ID) on delete no action on update no actiongo-- this works.				

RÉFÉRENCES

Pour plus d'informations, reportez-vous à la rubrique « en cascade l'intégrité contraintes » dans en ligne de SQL Server 2000.

Avertissement : cet article a été traduit automatiquement

Propriétés

ID d'article : 321843 - Dernière mise à jour : 11/02/2007 10:14:14 - Révision : 3.4

Microsoft SQL Server 2000 Standard, Microsoft SQL Server 2000 Édition Développeur, Microsoft SQL Server 2000 Édition Entreprise, Microsoft SQL Server 2000 Édition Personelle, Microsoft SQL Server 2000 Desktop Engine (Windows), Microsoft SQL Server 2005 Standard Edition, Microsoft SQL Server 2005 Developer Edition, Microsoft SQL Server 2005 Enterprise Edition, Microsoft SQL Server 2005 Express Edition, Microsoft SQL Server 2005 Workgroup Edition

  • kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtfr
Commentaires
/html>/script>