تحديث جدول SQL في Enterprise Manager - قضايا المفتاح الخارجي
-
04-10-2019 - |
سؤال
لدي طاولة مع مجموعة كاملة من 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
الجدول يعتمد على.