【问题标题】:Cannot truncate table [duplicate]无法截断表[重复]
【发布时间】:2013-04-02 01:38:55
【问题描述】:

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

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

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

【问题讨论】:

  • 删除表location的所有关系然后试试...
  • 错误信息有什么不清楚的地方?

标签: sql sql-server-2008 truncate


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

    为什么?

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

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

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

    更多信息请参见this article

    解决方法

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

    【讨论】:

      猜你喜欢
      • 2015-10-20
      • 1970-01-01
      • 2011-09-13
      • 2015-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-09
      相关资源
      最近更新 更多