我正在处理将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
的内容,就像删除之前一样?
如果碰巧有方法,是否会有数据丢失或加载数据的问题?
感谢您查看问题。
答案 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
当然,如果有任何不一致的数据,您将无法启用约束