事物

本文介绍SQL事务的基本概念,包括原子性、一致性、隔离性和持久性等特性,并通过转账案例演示如何使用开始事务、提交事务和回滚事务等命令来确保数据的一致性和安全性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

-[事务]
/*
 定义:
  事务(TRANSACTION)是作为单个逻辑工作单元执行的一系列操作
 
 创建事务语法:
  开始事务:begin transaction            或者 begin tran
  提交事务:commit transaction           或者 commit tran
  回滚(撤销)事务:rollback transaction 或者 rollback tran
  
 事务结束标志:
  事务提交或回滚
  
 特性:
  1)原子性(Atomicity):
   事务是一个完整的操作,事务的各元素是不可分割,要么全部成功的执行,
   要么全部撤消操作,事务的单元不可能出现只有部分成功的现象
  2)一致性(Consistency):
   事务完成前后,数据必须保持完全一致的状态
  3)隔离性(Isolation):
   事务是相对独立的,一个事务对数据进行修改时,其他事务是不能修改的
  4)持久性(Durability):

use stuDB
go
select * from bank
go
--转帐(张三转帐1000给李四)
update bank set currentMoney=currentMoney-1000 where customerName='张三'
update bank set currentMoney=currentMoney+1000 where customerName='李四'
print '转帐后的金额如下:'
select * from bank
----------------------------------------------------------------------------
--转帐失败 数据回滚
update bank set currentMoney=currentMoney-1000 where customerName='李四'
select * from bank
begin tran
declare @errorSum int
set @errorSum=0
update bank set currentMoney=currentMoney-1000 where customerName='张三'
select @errorSum=@errorSum+@@error
update bank set currentMoney=currentMoney+1000 where customerName='李四'
select @errorSum=@errorSum+@@error
if (@errorSum<>0)
 begin
  print '转帐失败``当前系统忙```'
  rollback transaction
 end
else
 begin
  print '转帐成功'
  commit transaction
 end
select * from bank
----------------------------------------------------------------------------
--转帐成功 数据提交
--模拟转帐500
begin tran
declare @errorSum int
set @errorSum=0
update bank set currentMoney=currentMoney-500 where customerName='张三'
select @errorSum=@errorSum+@@error
update bank set currentMoney=currentMoney+500 where customerName='李四'
select @errorSum=@errorSum+@@error
if (@errorSum<>0)
 begin
  print '转帐失败``当前系统忙```'
  rollback transaction
 end
else
 begin
  print '转帐成功'
  commit transaction
 end
select * from bank


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值