我正在进行以下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]
我的问题是,这是正确的做法,在删除和重新创建约束方面是否有任何伤害?此操作中是否会有任何数据丢失或任何其他问题?
答案 0 :(得分:1)
除非你真正摆脱外键值,否则你真的不应该放弃并重新创建这样的约束。看起来你在
上有另一个FK约束Element.ComponentType REFERENCES Component.ComponentType
检查dbo.Element中的外键,看看是否需要在那里删除/修改它。