doubleyong
管理员
管理员
  • 最后登录2025-12-02
  • 发帖数1198
  • 最爱沙发
  • 喜欢达人
  • 原创写手
  • 社区居民
  • 忠实会员
阅读:6144回复:0

sql server事务说明及示例

楼主#
更多 发布于:2018-02-26 10:55
SQL事务

一、事务概念

   事务是一种机制、是一种操作序列,它包含了一组数据库操作命令这组命令要么全部执行,要么全部不执行。因此事务是一个不可分割的工作逻辑单元。在数据库系统上执行并发操作时事务是作为最小的控制单元来使用的。这特别适用于多用户同时操作的数据通信系统。例如:订票、银行、保险公司以及证券交易系统等。

二、事务属性

事务4大属性:
1   原子性(Atomicity):事务是一个完整的操作。
2   一致性(Consistency):当事务完成时,数据必须处于一致状态。
3   隔离性(Isolation):对数据进行修改的所有并发事务是彼此隔离的。
4   持久性(Durability):事务完成后,它对于系统的影响是永久性的。

三、创建事务
T-SQL中管理事务的语句:
1 开始事务: begin transaction
2 提交事务:commit transaction
3 回滚事务: rollback transaction
事务分类:
1 显式事务:begin transaction明确指定事务的开始。
2 隐性事务:打开隐性事务:set implicit_transactions on,当以隐性事务模式操作时,SQL Servler将在提交或回滚事务后自动启动新事务。无法描述事务的开始,只需要提交或回滚事务。
3 自动提交事务:SQL Server的默认模式,它将每条单独的T-SQL语句视为一个事务。如果成功执行,则自动提交,否则回滚。


下面是转账的示例代码,转账分为,减钱与加钱。 而这两个命令需要看成一个整体来进行操作。要么全部成功,要么全部失败,这时就可以考虑使用事务

-- 事务开始前的余额
select * from bank

--开始事务
begin transaction
declare @errorsum int
set @errorsum = 0
update bank set currentMoney=currentMoney-1000
  where customerName = '张三'
  
set @errorsum =@errorsum +@@ERROR

update bank set currentMoney=currentMoney+1000
  where customerName='李四'
set @errorsum =@errorsum +@@ERROR

if(@errorsum<>0)
begin
    print '语句有错,回滚事务'
  rollback transaction
end
else
  begin
     print '语句正确,提交事务'
    commit transaction
end
  go

  print '事务执行后的余额'
  select * from bank
知识需要管理,知识需要分享
游客


返回顶部

公众号

公众号