Ray*_*and 2 sql-server truncate sql-server-2012
当我浏览 DBA-Reactions 时,我几乎理解了所有的 .gif,但是使用这个我遇到了麻烦:
https://twitter.com/DBAReactions/status/613840893322338304
我的意思是 truncate 显然不会像批量删除那样创建事务日志,但仍然存在您非常确定可以简单地截断完整表的情况。除此之外还有其他的顾虑吗?所以基本上我很想了解完全不同。
在某些情况下,您不能使用 TRUNCATE TABLE 命令而必须改用 DELETE 命令。
您不能在以下表上使用 TRUNCATE TABLE:
• 由 FOREIGN KEY 约束引用。(您可以截断具有引用自身的外键的表。)
• 参与索引视图。
• 使用事务复制或合并复制发布。
对于具有这些特征中的一个或多个的表,请改用 DELETE 语句。
TRUNCATE TABLE 无法激活触发器,因为该操作不记录单个行删除。有关详细信息,请参阅创建触发器 (Transact-SQL)。
MSDN上有很好的解释:
https://msdn.microsoft.com/en-gb/library/ms177570.aspx
另外,请参阅Stack Overflow 上的这个问题,该问题对该主题进行了长时间的讨论。