我对事物的理解

我对SQL事物的理解

  1. SQL中事物的定义及作用?
    事务就是被绑定在一起作为一个逻辑工作单元的SQL语句组,()如果任何一个语句操作失败那么整个操作就被失败,进而回滚到操作前状态,或者是上个节点。是指访问并可能更新数据库中各种数据项的一个程序逻辑执行单元(unit)。也是用户在SQL数据库中定义的一个数据库操作序列,这些用户所定义的操作要么不做,要么全做,是一个不可分割的工作单位。一个事务的执行不能被其他事务干扰。即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各个事务之间不能互相干扰。

  2. 事物的特点?
    一个逻辑工作单元必定会有ACID属性即:
    原子性(ATOMICITY):即一个事物要被完整的无二性的完成。一旦执行的操作环节中出现错误,所有构成事物的操作所产生的结果必须被撤销,数据会回滚(Rollback)到执行操作前的状态。

    一致性(CONSISTENCY):一个事物应该保护所有定义在数据上的不变的属性(如:完整性约束)。在完成了一个成功的事务时,数据应处于一致的状态。换句话说,一个事务应该把系统从一个一致-状态转换到另一个一致状态。举个例子,在关系数据库的情况下, 一个一致的事务将保护定义在数据上的所有完整性约束。
    隔离性(ISOLATION): 在同一个环境中可能有多个事务并发执行,而每个事务都应表现为独立执行,互不影响。
    持久性(DURABILITY):
    一个被事物被执行后所产生的结果是永久的。

  3. 事物的控制语句
    BEGIN 开始一个事务。
    ROLLBACK 事务回滚。
    ROLLBACK TO identifier 把事务回滚到标记点。
    COMMIT 提交事务。
    RELEASE SAVEPOINT identifier 删除一个事务的保存点,当没有指定的保存点时,执行该语句会抛出一个异常。

  4. 事物的创建及调用
    注:Remain是账户个人余额
    在这里插入图片描述

--创建存储过程
create proc cp_Charge
(
@idOut int,   --定义转出ID变量
@remain decimal(18,2),   --定义账户个人余额变量
@idIn  int     --定义转变量入ID
)
as
--开始事务
begin Transaction tran_Charge
--定义变量接收错误
declare @err_nums int
set @err_nums =0
begin try 
update Customers set Remain=Remain+200 where id=@idIn
set @err_nums=@err_nums+@@error
update Customers set Remain=Remain-200 where id=@idOut
set @err_nums=@err_nums+@@error
end try
begin catch
   print '错误编号:'+convert(varchar,error_number())+'错误消息'+error_message()
   set @err_nums=@err_nums+1
   end catch
   if(@err_nums>0)   --说明语句有错误
   rollback transaction tran_Charge--回滚事务
else
    commit transaction tran_Charge --提交事务
select * from Customers
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值