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

Traductions disponibles Traductions disponibles
Numéro d'article: 321843 - Voir les produits auxquels s'applique cet article
Agrandir tout | Réduire tout

Sommaire

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 tempdb
go
create table table1 (user_ID integer not null primary key, user_name
char(50) not null)
go

create table table2 (author_ID integer not null primary key, author_name
char(50) not null, lastModifiedBy integer not null, addedby integer not
null)

go

alter table table2 add constraint fk_one foreign key (lastModifiedby)
references table1 (user_ID) on delete cascade on update cascade
go
alter table table2 add constraint fk_two foreign key (addedby)
references table1(user_ID) on delete no action on update cascade
go
--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 action
go
-- 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.

Propriétés

Numéro d'article: 321843 - Dernière mise à jour: vendredi 2 novembre 2007 - Version: 3.4
Les informations contenues dans cet article s'appliquent au(x) produit(s) suivant(s):
  • 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
Mots-clés : 
kbmt kbbug kbpending kbprb kbprogramming KB321843 KbMtfr
Traduction automatique
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
L'INFORMATION CONTENUE DANS CE DOCUMENT EST FOURNIE PAR MICROSOFT SANS GARANTIE D'AUCUNE SORTE, EXPLICITE OU IMPLICITE. L'UTILISATEUR ASSUME LE RISQUE DE L'UTILISATION DU CONTENU DE CE DOCUMENT. CE DOCUMENT NE PEUT ETRE REVENDU OU CEDE EN ECHANGE D'UN QUELCONQUE PROFIT.

Envoyer des commentaires

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com