在最近的一次采访中,我被问到了两者之间的区别。我回答了我们所知道的一般问题......
然后采访者询问截断是否可以回滚?我没有回复......
面试官说它可以回滚,并要求我详细了解删除和截断的幕后操作细节,然后再查看。
我在这里发布这个问题不只是为了定义和我们所知道的事情......而是为了达到它的核心。对这方面的看法将非常高昂......
提前致谢
答案 0 :(得分:18)
显然是truncate can't be rolled back is a myth。
的想法答案 1 :(得分:5)
truncate操作将释放属于该表的所有页面。记录这些解除分配并可以回滚。删除会将所有行标记为已删除,并记录每一行。
答案 2 :(得分:3)
如果您在交易中立即执行此操作,则可以回滚截断。它不能像以后那样从事务日志中回滚,就像在数据库恢复中一样。在交易中测试并查看。
答案 3 :(得分:1)
那么最后你可以将Truncate作为事务的一部分回滚但不是在提交之后回滚?