删除并重新创建SQL Server中的约束

时间:2017-08-29 18:21:31

标签: sql sql-server sql-server-2008

我正在进行以下SQL操作

insert Component values (201, 19, 1, 'Statements', 1, 10)

我必须使用我在下面执行的脚本将其还原回来

delete from Component where ComponentID = 201 and ComponentTypeID = 19

问题是我收到如下错误

  

DELETE语句与REFERENCE约束冲突" FK_Component_ComponentType"。冲突发生在数据库"测试",表"组件",列' ComponentTypeID'。

所以我正在做的解决这个问题的方法是删除约束并在我完成删除行时添加回来

alter table Component   drop
        FK_Component_ComponentType

然后将其添加回来

ALTER TABLE [dbo].[Component]  WITH CHECK ADD  CONSTRAINT [FK_Component_ComponentType] FOREIGN KEY([ComponentTypeID])
REFERENCES [dbo].[ComponentType] ([ComponentTypeID])
ALTER TABLE [dbo].[Component] CHECK CONSTRAINT [FK_Component_ComponentType]

我的问题是,这是正确的做法,在删除和重新创建约束方面是否有任何伤害?此操作中是否会有任何数据丢失或任何其他问题?

1 个答案:

答案 0 :(得分:1)

除非你真正摆脱外键值,否则你真的不应该放弃并重新创建这样的约束。看起来你在

上有另一个FK约束
Element.ComponentType REFERENCES Component.ComponentType

检查dbo.Element中的外键,看看是否需要在那里删除/修改它。