我有一堆包含大量FK的表。
Table Vehicles
-----------
ColorID -> Color.ID
MakeID -> Make.ID
ModelID -> Model.ID
etc...
我的问题是我忘了几栏,我需要添加它们。我可以通过右键单击表并选择“设计”来添加它们,但如果我想将它们设为NOT NULL或删除列,则不能添加它们。我也可以生成一个Drop / Create Script,但是我得到了这个错误:
Msg 3726, Level 16, State 1, Line 4
Could not drop object 'dbo.SellVehicles' because it is referenced by a FOREIGN KEY constraint.
我是否需要通过并删除每个FK然后删除/创建,然后将它们添加回来或者是否有快速/无痛的方式执行此操作?有没有办法迅速放弃并重建这些FK?
为什么不
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是否仍然在另一个表上被引用?
答案 0 :(得分:4)
触发错误的约束 不在dbo.SellVehicles
表 ;它位于引用 dbo.SellVehicles
表的表上。对Color,Make和Model表的引用不是问题 - 您试图以父子关系删除/删除子项。
我怀疑你在ALTER TABLE ... DROP CONSTRAINT ...
之前存在的约束是否存在。
在SSMS中,您可以右键单击表格,然后选择“依赖关系”。有一个单选按钮可以选择查看依赖于dbo.SellVehicles
表的对象,或dbo.SellVehicles
表所依赖的对象。