2013-04-10 95 views
0

当我试图截断表,我得到了错误信息如下,不能截断表

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

我不知道that..Anyone查询帮助我。

+0

删除表'location'的所有关系,然后尝试... – 2013-04-10 09:32:19

+1

有什么不清楚的错误信息? – 2013-04-10 10:02:55

回答

1

为什么?

TRUNCATE之所以删除所有记录而没有单独检查。

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

TRUNCATE TABLE位置不会执行此操作。执行单个截断操作(并记录),这就是为什么更快。

查看this article了解更多信息。

解决方法

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

1

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

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