zoukankan      html  css  js  c++  java
  • 数据库事务--学习笔记

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

       一个简单的例子。

     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站 能是我在 这个网址  点击看链接 下学习到以上内容。  

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

  • 相关阅读:
    liunx下mysql数据库使用之三范式,关系模型设计注意项,安装目录结构
    Liunx系统学习一,liunx系统的目录结构及含义
    liunx环境下的mysql数据库配置文件my.conf内的参数含义
    linux下打开chm文件的方法
    java的四舍五入算法
    【JVM】jvm垃圾回收器相关垃圾回收算法
    Linux下MySQL数据库常用基本操作 一
    liunx环境下安装mysql数据库
    加权平均
    Host绑定
  • 原文地址:https://www.cnblogs.com/zzz7/p/11739492.html
Copyright © 2011-2022 走看看