SQL中事务

一,事务的理解
   
事务是什么,为什么要使用事务,先说一个实际的问题:假如A要通过银行卡转账100元到B的银行卡里,那么要实现的过程就是A的账户-100元,B的账户+100元,这时执行SQL语句分为两个步骤,(1),update A set money-100,(2),update B set money+100,但是这样会出现一些问题:如果语句(1)执行成功了,而(2)执行失败了,sql语句有时执行失败是很正常的事情,但是如果出现在以上的业务中,就会造成很大的问题,这时我们就想能不能有这么一种方式:要么执行成功,则A-100,B+100,一旦这个过程中有没有执行成功的语句,则我们就回到初始状态,什么也不做,而事务正是帮我们做到了这一点。


二,事务的属性
   (1)原子性:事务中所有元素作为一个整体提交或回滚,事务的元素是不可分的,事务是一个完整操作
   (2)一致性:事务完成时,数据必须是一致的,也就是说,和事务开始之前,数据存储中的数据处于一致状态,保证数据的无损
   (3)隔离性:对数据进行修改的多个事务是彼此隔离的,这表明事务是必须独立的
   (4)持久性,事务完成之后,对于数据库的影响是永久的。

 

三,事务的简单例子
        注意:
1 单独执行第一条SQL语句,则执行成功
                   2 单独执行第二条SQL语句,会执行失败,我设置了MovieName的 约束:len(MovieName)>=2


--定义一个变量
declare @errorNum int
--给该变量赋初始值
set @errorNum=0
--开始事务
begin transaction
 --执行第一条SQL语句
delete from Movie where MovieID=1
      
  --获得此时错误号
        set @errorNum=@errorNum+@@error
--执行第二条SQL语句
update Movie set MovieName='1' where MovieID=2
       
--获得此时的错误号
        set @errorNum=@errorNum+@@error

--判断错误号
if(@errorNum=0)
      
--为0时提交事务
       begin
                commit transaction
                print 'OK'
       end
else
    
  --回滚事务
      begin
              rollback transaction
              print 'Error'
      end

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值