• 设为首页
  • 收藏本站
  • 积分充值
  • VIP赞助
  • 手机版
  • 微博
  • 微信
    微信公众号 添加方式:
    1:搜索微信号(888888
    2:扫描左侧二维码
  • 快捷导航
    福建二哥 门户 查看主题

    SQL Server中TRUNCATE事务回滚操作方法

    发布者: 404号房间 | 发布时间: 2025-6-18 14:12| 查看数: 116| 评论数: 0|帖子模式

    我们一般都认为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操作进行回滚的。

    来源:https://www.jb51.net/article/84781.htm
    免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!

    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有账号?立即注册

    ×

    最新评论

    QQ Archiver 手机版 小黑屋 福建二哥 ( 闽ICP备2022004717号|闽公网安备35052402000345号 )

    Powered by Discuz! X3.5 © 2001-2023

    快速回复 返回顶部 返回列表