数据库事务--学习笔记 数据库事务的总结

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

   一个简单的例子。

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

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

猜你喜欢

转载自www.cnblogs.com/zzz7/p/11739492.html