在Enterprise Manager中更新SQL表-外键问题

在Enterprise Manager中更新SQL表-外键问题,sql,sql-server,foreign-keys,enterprise-manager,Sql,Sql Server,Foreign Keys,Enterprise Manager,我有一张桌子,上面有一大堆FK Table Vehicles ----------- ColorID -> Color.ID MakeID -> Make.ID ModelID -> Model.ID etc... 我的问题是我忘记了一些列,我需要添加它们。我可以通过右键单击表并选择“设计”来添加它们,但如果我想使它们不为NULL或删除列,则不能添加。我还可以生成一个拖放/创建脚本,但我遇到以下错误: Msg 3726, Level 16, State 1, Line 4 C

我有一张桌子,上面有一大堆FK

Table Vehicles
-----------
ColorID -> Color.ID
MakeID -> Make.ID
ModelID -> Model.ID
etc...
我的问题是我忘记了一些列,我需要添加它们。我可以通过右键单击表并选择“设计”来添加它们,但如果我想使它们不为NULL或删除列,则不能添加。我还可以生成一个拖放/创建脚本,但我遇到以下错误:

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是否仍在被引用的另一个表上?

触发错误的约束不在
dbo.SellVehicles
表上;它位于引用
dbo.SellVehicles
表的表上。对Color、Make和Model表的引用不是问题所在——您正在尝试删除父-子关系中的子项

我怀疑您测试的约束在
altertable之前就存在了。。。删除约束…


在SSMS中,您可以右键单击表,然后选择“依赖项”。有一个单选按钮可以选择查看依赖于
dbo.SellVehicles
表的对象,或者查看
dbo.SellVehicles
表所依赖的内容。

触发错误的约束是而不是
dbo.SellVehicles
;它位于引用
dbo.SellVehicles
表的表上。对Color、Make和Model表的引用不是问题所在——您正在尝试删除父-子关系中的子项

我怀疑您测试的约束在
altertable之前就存在了。。。删除约束…


在SSMS中,您可以右键单击表,然后选择“依赖项”。有一个单选按钮可以选择查看依赖于
dbo.SellVehicles
表的对象,或者查看依赖于
dbo.SellVehicles
表的内容。

@Blankasaurus:Yes,必须先删除/禁用对
dbo.SellVehicles
表的依赖关系,然后才能删除它。引用我试图修改的表的父表上的FK约束。那么,假设我有20个依赖项,有没有一种快速的方法来生成一个脚本,在那些依赖于我试图修改的表的表上删除/创建所有FK?禁用。。。是“强制FK约束”=否?@Blankasaurus:是的,您必须删除/禁用对
dbo.SellVehicles
表的依赖关系,然后才能删除它。父表上的FK约束引用了我试图修改的表。那么,假设我有20个依赖项,有没有一种快速的方法来生成一个脚本,在那些依赖于我试图修改的表的表上删除/创建所有FK?禁用。。。是“强制FK合同”=否?