C#编程数据库创建与使用事务
六、创建与使用事务1.为什么要使用事务
分析银行转账流程:资金从账户 A 转到账户 B ,至少需要两步:
账户 A 的资金减少;然后账户 B 的资金相应增加。
问题:假定贺小张的账户直接转账 1000 元到马小李的账户
转账失败原因分析
2.什么是事务
事务的概念及要求
事务(TRANSACTION )是作为单个逻辑工作单元执行的一系列操作。
多个操作作为一个整体向系统提交,要么执行、要么都不执行。
事务是一个不可分割的工作逻辑单元。
银行转账过程就是一个事务
它需要两条 UPDATE 语句来完成,这两条语句是一个整体。
如果其中任一条出现错误,则整个转账业务也应该取消,两个账户的余额应恢复到原来的数据,从而确保转账前和转账后的余额不变。
3.事务的特性
事务必须具备以下四个属性
原子性(Atomicity):事务是一个完整的操作 ,事务的各步操作是不可分的 ,要么都执行,要么都不执行。
一致性(Consistency):当事务完成时,数据必须处于一致状态。
隔离性(Isolation):并发事务直接彼此隔离、独立,它不应以任何方式依赖于或影响其他事务。
永久性(Durability):事务完成后,它对数据库的修改被永久保存。
4.事务的分类
显式事务
用 BEGIN TRANSACTION 明确指定事务的开始。
最常用的事务类型。
隐式事务
通过设置 SET IMPLICIT_TRANSACYION ON 语句,将隐式事务模式设置为打开。
其后的 T-SQL 语句自动启动一个事务。
提交或回滚一个事务后,T-SQL 语句又将启动一个新事务。
自动提交事务
SQL Server 的默认模式。
每条单独的 T_SQL 语句视为一个事务。
5.如何创建事务
使用 SQL 语句管理事务的基本步骤
开始事务
提交事务
回滚事务
事务处理的关键问题
对事务中的 insert、update、delete 语句实时跟踪。
判断某条语句执行是否出错的方法
使用全局变量@@ERROR。
@@ERROR 只判断当前一条 T-SQL 语句执行是否有错。
为了判断事务中所有的 T-SQL 语句是否有错,可以对错误进行累计。
6.使用事务解决转账问题
启用事务转账的代码
页:
[1]