1

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

**Cannot truncate table 'Locations' because it is being referenced by a FOREIGN KEY constraint.**

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

4

2 回答 2

1

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

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

于 2013-04-10T19:45:09.920 回答
1

为什么?

原因是 TRUNCATE 在没有单独检查的情况下删除了所有记录。

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

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

有关更多信息,请参阅本文

解决方法

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

于 2013-04-10T09:39:58.490 回答