首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在SQL回滚事务中,它从哪里回滚状态?

在SQL回滚事务中,它从哪里回滚状态?
EN

Stack Overflow用户
提问于 2016-04-05 04:22:15
回答 2查看 169关注 0票数 0

在SQL回滚事务中,它从哪里回滚状态?我的意思是存储数据的位置,以便回滚可以恢复数据。

EN

回答 2

Stack Overflow用户

发布于 2016-04-05 04:26:24

对于Oracle,它在提交之前将更改保存在重做日志中。每个RDMS都有自己的策略。

票数 0
EN

Stack Overflow用户

发布于 2018-01-04 19:47:56

您可以使用安全而简单的代码来运行100% (运行所有查询行)或不运行任何查询行

|查询1| = like insert into或select or ... |行数|=关闭查询的数量

代码语言:javascript
复制
    DECLARE @rowcount int  set @rowcount = 0 ; 
    BEGIN TRANSACTION [Tran1]
    BEGIN TRY 
     <Query 1> ; set @rowcount = (@rowcount + @@ROWCOUNT); 
     <Query 2> ; set @rowcount = (@rowcount + @@ROWCOUNT); 
    ...
    IF @rowcount =  <count of lines>
      COMMIT TRANSACTION[Tran1]
    ELSE
      ROLLBACK TRANSACTION[Tran1]
    END TRY
      BEGIN CATCH
      ROLLBACK TRANSACTION[Tran1]
    END CATCH

例如,这段代码运行2,insert into into行查询,但是运行所有的him,或者不运行任何东西,然后回滚

代码语言:javascript
复制
DECLARE @rowcount int  set @rowcount = 0 ; 
    BEGIN TRANSACTION [Tran1]
    BEGIN TRY 
     insert into [database].[dbo].[tbl1] (fld1) values('1') ;
        set @rowcount = (@rowcount + @@ROWCOUNT); 
     insert into [database].[dbo].[tbl2] (fld1) values('2') ;
        set @rowcount = (@rowcount + @@ROWCOUNT); 

    IF @rowcount =  2
      COMMIT TRANSACTION[Tran1]
    ELSE
      ROLLBACK TRANSACTION[Tran1]
    END TRY
      BEGIN CATCH
      ROLLBACK TRANSACTION[Tran1]
    END CATCH

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36412207

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档