• 数据库事务--学习笔记


    系统又出现,用户的钱给多扣了,库存莫名给多了几个。   
    进销存出现的问题还是比交多的,看了很长时间都没有找到解决办法,
    依稀记得之前去面试的时候面试官问到过我回滚的问题,当时没有回答好,回想常去面试一下也好。
    今天去学习了一下数据库事务的一些知识。(总结一下)

       一个简单的例子。

     1  --通过事务执行转账  约束是金额不能小于10,所以当小于10 的时候就会出错。才能进入事务
     2   begin transaction
     3  declare @sum int = 0 
     4     update bank set balance = balance+10 where cld ='0001'
     5     set @sum = @sum+ @@ERROR
     6     update bank set balance = balance-10 where cld ='0002'
     7     set @sum = @sum+ @@ERROR 
     8     --只要有一个sql 有错sum 就一定不是零,只要是sum不是零那就直接回滚, 
     9     if @sum <> 0 
    10     begin 
    11         --表示程序执行出错   --回滚
    12         rollback
    13      end
    14      else 
    15     begin 
    16         --如果没有出错,则提交该事务
    17         commit 
    18     end
    19   

    事务的分类

      

    ---自动提交事务

    -- 当执行一条sql语句的时候,数据库自己帮助我们打开一个事务,当语句执行成功,数据库自动提交事务,执行失败,数据库自动回滚事务  这也是我们常用到的。

      insert into bbbb values (fsd)

    --隐式事务

    每次执行以下sql的时候,数据库自动帮我们提交一个事务,但是要我们手动提交,或者回滚

    SET IMPLICIT_TRANSACTIONS{ON| OFF} 隐式事务 

    1 --打开隐式事务
    2 SET IMPLICIT_TRANSACTIONS ON 
    3 insert into bank values ('0004',1000000)
    4 commit    --直不返回,数据库一直是锁这的。
    5 SET IMPLICIT_TRANSACTIONS OFF --关闭隐式事务 
    6 SELECT *FROM bank

    --显示事务:

    需要手动打开事务,手动打开事务,手动提交事务或者回滚事务。

    --需要手动打开事务,手动打开事务,手动提交事务或者回滚事务。
    begin tran 
    --....
    
    commit tran
    
    -- 
    rollback transaction

    特别感谢:传智博客和B站 能是我在 这个网址  点击看链接 下学习到以上内容。  

    一些概念   数据库事务的总结

  • 相关阅读:
    【初心】
    【杂题集】单题小总结
    【模板】(旧)矩阵模板
    【机智题?】【Vijos】【天平称量】
    【杂题集】【51NOD 1267】4个数和为0
    【模板】(旧)Miller Rabin 素数判定
    【杂谈】只是想想
    【杂谈】思考
    【学习?】组合和排序
    【模版】读入优化
  • 原文地址:https://www.cnblogs.com/zzz7/p/11739492.html
Copyright © 2020-2023  润新知