代码之家  ›  专栏  ›  技术社区  ›  HotTester

sql server中删除和截断的区别。我错了吗…?

  •  17
  • HotTester  · 技术社区  · 15 年前

    然后面试官问truncate是否可以回滚?我回答不。。。

    面试官说可以回滚,让我把删除和截短这两个幕后操作的细节讲一遍,以后再检查。

    我把这个问题贴在这里不仅仅是为了定义和我们知道的事情。。。但要抓住它的核心。在这方面投光将是高度赞赏。。。

    提前谢谢

    4 回复  |  直到 15 年前
        1
  •  18
  •   Joe Phillips    15 年前

    很明显 truncate can't be rolled back is a myth .

    • Truncate可以从事务中回滚。不同之处在于,对于每个被删除的记录,truncate在日志中被记录为页释放,而不是delete。一旦操作被提交,就无法撤消。
    • 截断时,将重置标识字段。当你删除时,你不是。
    • 不能截断外键引用的表。
    • 截断不会触发任何删除触发器
        2
  •  5
  •   Remus Rusanu    15 年前

        3
  •  3
  •   HLGEM    15 年前

    如果在事务中立即执行Truncate,则可以回滚它。以后不能像在数据库恢复中那样从事务日志回滚。在事务中测试它并查看。

        4
  •  1
  •   Cericme    15 年前

    因此,最终您可以作为事务的一部分回滚截断,但不能在提交之后回滚?