关于sql:无法截断表

Cannot truncate table

本问题已经有最佳答案,请猛点这里访问。

当我尝试截断表时,我收到错误消息如下,

1
**Cannot TRUNCATE TABLE 'Locations' because it IS being referenced BY a FOREIGN KEY CONSTRAINT.**

我不知道查询...任何人帮助我。


有一点需要注意 - 当您截断标识列时会重置。当你删除它不。因此,如果您执行删除操作并且最后一个值为242,则下一个值将为243。

截断的唯一方法是删除关系。就个人而言 - 我只是删除而不是删除所有的关系,然后把它们放回去。


为什么?

原因是TRUNCATE删除所有记录而没有单独检查。

因此,DELETE FROM Locations将删除每条记录(这是记录在事务日志中的记录),检查没有违反任何约束。

TRUNCATE TABLE位置不会这样做。执行(并记录)单个截断操作,这就是更快的原因。

有关更多信息,请参阅此文章。

解决方法

最简单的方法是删除而不是截断。但是如果这有很长的执行时间,并且删除约束是安全的,那么您可能希望编写一个脚本来删除约束,截断表,创建约束。