سؤال

لدي طاولة مع مجموعة كاملة من FKS.

Table Vehicles
-----------
ColorID -> Color.ID
MakeID -> Make.ID
ModelID -> Model.ID
etc...

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

Msg 3726, Level 16, State 1, Line 4
Could not drop object 'dbo.SellVehicles' because it is referenced by a FOREIGN KEY constraint.

هل أحتاج إلى الذهاب وإزالة كل FK ثم إسقاط/إنشاء ، ثم أضفها مرة أخرى أم أن هناك طريقة سريعة/غير مؤلمة للقيام بذلك؟ هل هناك طريقة لإسقاط هذه FKS وإعادة إنشائها بسرعة؟

لماذا لا

IF  EXISTS (SELECT * FROM sys.foreign_keys WHERE object_id = OBJECT_ID(N'[dbo].[FK_SellVehicles_Conditions]') AND parent_object_id = OBJECT_ID(N'[dbo].[SellVehicles]'))
ALTER TABLE [dbo].[SellVehicles] DROP CONSTRAINT [FK_SellVehicles_Conditions]
GO

القضاء على هذا الخطأ؟ هل لا يزال FK على الجدول الآخر يجري الرجوع إليه؟

هل كانت مفيدة؟

المحلول

القيد الذي يؤدي إلى الخطأ ليس على dbo.SellVehicles الطاولة; ؛ إنه على طاولة المراجع ال dbo.SellVehicles الطاولة. الإشارات إلى الجداول الملونة والصنع والنماذج ليست هي المشكلة-تحاول إسقاط/حذف الطفل في علاقة الوالدين والطفل.

أشك في أن القيد الذي تختبره موجودًا قبل ALTER TABLE ... DROP CONSTRAINT ....

في SSMS ، يمكنك النقر بزر الماوس الأيمن على جدول ، وتحديد "التبعيات". يوجد زر راديو لتحديد عرض الكائنات التي تعتمد على dbo.SellVehicles الجدول ، أو الأشياء التي dbo.SellVehicles الجدول يعتمد على.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top