删除和还原SQL Server数据库表中的外键值

时间:2018-03-29 09:19:04

标签: sql-server

我正在处理将XML文件内容加载到SQL Server数据库中的表中,我想要删除SQL Server数据库中dbo.Accounting的表APC_PK_ID的内容。它的主键,然后从xml文件加载其内容。

但是有消息说出来了:

  

DELETE语句与REFERENCE约束冲突" FK__Inventori__Accou__29CC2871"。冲突发生在数据库" PAModel",table" dbo.Inventories",column' APC_PK_ID'中。   声明已经终止。

所以现在我发现我必须分别从APC_PK_ID表中删除dbo.Inventories的列内容。

但令我担心的是,是否有可能恢复APC_PK_ID表中dbo.Inventories的内容,就像删除之前一样?

如果碰巧有方法,是否会有数据丢失或加载数据的问题?

感谢您查看问题。

2 个答案:

答案 0 :(得分:0)

这是一个很常见的话题: How can foreign key constraints be temporarily disabled using T-SQL?

启用/禁用约束不会导致数据丢失。 但是,如果数据不一致,则无法启用它们。 例如,子表记录是指父表的缺失记录

答案 1 :(得分:0)

您不需要删除(DROP)外键约束,您可以使用NOCHECK CONSTRAINT禁用它:

ALTER TABLE dbo.Inventories NOCHECK CONSTRAINT FK__Inventori__Accou__29CC2871

更改后,再次启用:

ALTER TABLE dbo.Inventories WITH CHECK CHECK CONSTRAINT FK__Inventori__Accou__29CC2871

当然,如果有任何不一致的数据,您将无法启用约束