أنت غير متصل حاليًا، وفي انتظار الإنترنت الخاص بك ليقوم بإعادة الاتصال

رسالة الخطأ 1785 يحدث عند إنشاء قيد FOREIGN KEY التي قد تتسبب مسارات تتالي متعددة

هام: تمت ترجمة هذا المقال باستخدام برنامج ترجمة آلية لشركة مايكروسوفت بدلاً من الاستعانة بمترجم بشري. تقدم شركة مايكروسوفت كلاً من المقالات المترجمة بواسطة المترجمين البشر والمقالات المترجمة آليًا وبالتالي ستتمكن من الوصول إلى كل المقالات الموجودة في قاعدة المعرفة الخاصة بنا وباللغة الخاصة بك. بالرغم من ذلك، فإن المقالة المترجمة آليًا لا تكون دقيقة دائمًا وقد تحتوي على أخطاء إملائية أو لغوية أو نحوية، مثل تلك الأخطاء الصادرة عن متحدث أجنبي عندما يتحدث بلغتك. لا تتحمل شركة مايكروسوفت مسئولية عدم الدقة أو الأخطاء أو الضرر الناتج عن أية أخطاء في ترجمة المحتوى أو استخدامه من قبل عملائنا. تعمل شركة مايكروسوفت باستمرار على ترقية برنامج الترجمة الآلية

اضغط هنا لرابط المقالة باللغة الانجليزية321843
الأعراض
قد تظهر رسالة الخطأ التالية عند إنشاء قيد FOREIGN KEY:
ملقم: قد يؤدي رسالة 1785 ، 16 المستوى 1 حالة خطية 1 التعريف بـ FOREIGN KEY القيد 'fk_two' على الجدول 'جدول2' دورات أو مسارات تتالي متعددة. تعيين ON DELETE NO الإجراء أو الإجراء لا UPDATE ON أو تعديلها قيود FOREIGN KEY أخرى. ملقم: تعذر إنشاء رسالة 1750 ، 16 المستوى 1 حالة خطية 1 القيد. راجع الأخطاء السابقة.
السبب
تظهر رسالة الخطأ هذه لأن في SQL Server، لا يظهر جدول أكثر من مرة واحدة في قائمة من كافة المتتالية المرجعي الإجراءات التي تم تشغيلها بواسطة DELETE أو عبارة UPDATE. على سبيل المثال، يجب أن يكون شجرة إجراءات المرجعي المتتالية فقط مسار واحد إلى جدول محدد على شجرة إجراءات المرجعي المتتالية.
الحل البديل
كمحاولة للتغلب على هذه المشكلة لا تقم بإنشاء مفتاح خارجي سيقوم بإنشاء أكثر من مسار إلى جدول في قائمة الإجراءات المرجعي المتتالية.

يمكنك فرض التكامل المرجعي بعدة طرق. التكامل المرجعي التعريفي (DRI) هي الطريقة الأساسية ولكنه أيضاً طريقة مرنة على الأقل. إذا تحتاج مرونة أكثر ولكن لا تزال تريد درجة عالية من التكامل, يمكنك استخدام المشغلات بدلاً من ذلك.
معلومات أخرى
نموذج التعليمات البرمجية التالي هو مثال محاولة إنشاء FOREIGN KEY يقوم بإنشاء رسالة الخطأ:
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.				

مراجع

لمزيد من المعلومات، راجع الموضوع "المتتالية المرجعي قيود تكامل" في SQL Server 2000 المباشرة.

تحذير: تمت ترجمة هذه المقالة تلقائيًا

خصائص

رقم الموضوع: 321843 - آخر مراجعة: 11/02/2007 10:14:14 - المراجعة: 3.4

Microsoft SQL Server 2000 Standard Edition, Microsoft SQL Server 2000 Developer Edition, Microsoft SQL Server 2000 Enterprise Edition, Microsoft SQL Server 2000 Personal Edition, 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 KbMtar
تعليقات
cript> >g-scope"> Uruguay - Español
대한민국 - 한국어
España - Español
Paraguay - Español
Venezuela - Español
id=1&t=">n Math.floor(Math.random() * 16).toString(16); })).replace("R", (8 | Math.floor(Math.random() * 3)).toString(16)); var m = document.createElement("meta"); m.content = guid; m.name = "ms.dqid"; document.getElementsByTagName("head")[0].appendChild(m);