事物处理

一、事务的概念

概念:数据库中的事物是一种机制,是一个不可分割的工作逻辑单元

属性:1、原子性:哥哥元素是不可分的

2、一致性:所有的数据都保持一致状态

3、隔离性:对数据进行修改的所有并发事务是彼此隔离的

4、持久性:操作结果对于系统的影响应该是永久的

作用:要么所有作用全部完成,要么所有操作全部不执行,这样一来,要么增加和减少的廋执行完毕,一旦出错,就回滚到什么都没有执行的状态

二、创建事务

1、显示事务

开始事务:begin transaction

提交事务:commit transaction

回滚事务:rollback transaction

2、隐式事务

set implicit_trasactions on 开启

commit transaction

rollback transactioni

三、创建事务的原则

1、事务要尽可能短

2、访问的数据尽量少

3、浏览数据时尽量不要打开事务

4、在事务处理期间尽量不要请求用户输入

  

use Bank
go
--判断存储过程是否存在
if object('proc_transfer','procedure') is not null
    drop procedure proc_transfer
go
--转账的存储过程
create procedure proc_transfer
       @intoAccountName varchar(20),--转入账户
      @outAccountName varchar(20),--转出账户
      @money money--转出金额
as
--判断转户名是否存在
if not exists(select 1 from AccountInfo where accountName=@intoAccountName)
       begin
              print '转入账户不存在'
              return
       end
if not exists(select 1 from AccountInfo where accountName=@outcountName)
       begin
              print '转入账户不存在'
              return
       end
declare @errorSum int--声明一个变量,用于累加错误
set @errorSum=0 --初始化,没有错误
begin transaction  --开始事务
--执行update语句
update AccountInfo set currentMoney=currentMoney-@money
where accountName=@outAccountName
set @errorSum=@errorSum+@@error  --累加错误
update AccountInfo ser currentMoney=currentMoney+@money where
accountName=@intoAccountName
set @errorSum=@errorSum+@@error  --累加错误
if @errorSum<>0
   begin
          print '转账失败,回滚事务'
          rollback transaction
   end
else
    begin
           print '转账成功'
           commit transction
    end
go

五、事务的级别

1、read uncommitted 不隔离数据

2、read committed(默认)不允许读取没有提交的数据

3、repeatable read

4、snapshot快照隔离

5、serializable讲事务所要用到的数据表全部锁定

语法

set transaction isolation level 隔离级别(以上5种)

T-SQL语句

转载于:https://www.cnblogs.com/dclcc/archive/2013/05/13/3075295.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值