SQL Server中TRUNCATE事务回滚操作方法 |
我们一般都认为TRUNCATE是一种不可回滚的操作,它会删除表中的所有数据以及重置Identity列 。 如果你在事务中进行TRUNCATE操作,就能回滚 。反之,它就不会从日志文件文件恢复数据 。它不会在日志文件中记录删除的那些数据,它只在日志中记录数据页的单元分配 。 下面的例子就能解释上面的所说的. 复制代码 代码如下: USE temp_test_database
GO --创建一个临时表 CREATE TABLE TruncateTabel(ID INT) INSERT INTO TruncateTabel(ID) SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 GO 复制代码 代码如下: --检查插入的数据
SELECT * FROM TruncateTabel 如图: 开始执行事务 复制代码 代码如下: --开始事务 BEGIN TRAN TRUNCATE TABLE TruncateTabel GO --回滚之前检查TruncateTable SELECT * FROM TruncateTabel GO F5执行,如图: 执行回滚事务 复制代码 代码如下: --回滚事务
ROLLBACK TRAN GO 再次检查表TruncateTable 复制代码 代码如下: --回滚之后再次检查TruncateTable
SELECT * FROM TruncateTabel GO F5执行,如图: 总结一下,事务是可以对TRUNCATE操作进行回滚的 。 您可能感兴趣的文章:
|