数据库事务实例.doc
文本预览下载声明
什么是数据库事务?数据库事务是指作为单个逻辑工作单元执行的一系列操作。具体表现为:可以将几个sql语句作为一个整体来执行,这些sql语句当有一条执行出错时,那么所有的sql语句都将执行失败。也就是这些sql语句作为一个整体,要么全部执行成功,要么全部执行失败。使用事务能便于恢复数据,保证数据的一致性。
一 事务的属性事务具有ACID属性即 Atomic原子性, Consistent一致性, Isolated隔离性, Durable永久性
原子性
就是事务应作为一个工作单元,事务处理完成,所有的工作要么都在数据库中保存下来,要么完全回滚,全部不保留
一致性事务完成或者撤销后,都应该处于一致的状态。
隔离性
多个事务同时进行,它们之间应该互不干扰。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。
永久性事务提交以后,所做的工作就被永久的保存下来
事务实例:
create?procedure?TransferMoeny(????@FromAccountNo?varchar(50),--?转出账号????@ToAccountNo?varchar(50),--转入账号????@MoneyCount?money--转账金额)as--判断账号是否存在if?exists?(select?1?from?帐户表?where?账号?=?@FromAccountNo)?begin????if?exists?(select?1?from?帐户表?where?账号?=?@ToAccountNo)?????begin????????--判断转出金额是否大于当前余额????????if?(select?当前余额?from?帐户表?where?账号?=?@FromAccountNo)?=?@MoneyCount????????begin????????????--开始转账????????????begin?transaction????????????insert?into?[存取记录表]?([账号],[存取类型],?[存取金额])?values(@FromAccountNo,?-1,@MoneyCount)????????????if?@@error??0????????????begin????????????????rollback?transaction--发生错误则回滚事务,无条件退出l????????????????return????????????end???????????????????????insert?into?[存取记录表]?([账号],[存取类型],?[存取金额])?values(@ToAccountNo,?1,@MoneyCount)????????????if?@@error??0????????????begin????????????????rollback?tran????????????????return????????????end????????????commit?transaction?--两条语句都完成,提交事务????????end????????else????????????????raiserror?(转账金额不能大于该账号的余额,16,1)????end????else????raiserror?(转入账号不存在,16,1)endelse????raiserror?(转出账号不存在,16,1)
显示全部