SQL Server:在事务中回滚TRUNCATE操作

日期: 2010-04-28 作者:兴百放 来源:TechTarget中国 英文

  我们一般都认为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

  如图:

执行结果截图1

  开始执行事务

  –开始事务

  BEGIN TRAN

  TRUNCATE TABLE TruncateTabel

  GO

  –回滚之前检查TruncateTable

  SELECT * FROM TruncateTabel

  GO

  F5执行,如图:

执行结果截图2

  执行回滚事务

  –回滚事务

  ROLLBACK TRAN

  GO

  再次检查表TruncateTable

  –回滚之后再次检查TruncateTable

  SELECT * FROM TruncateTabel

  GO

  F5执行,如图:

执行结果截图3

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐