黑马程序员-SQL事务处理
来源:互联网 发布:linux内核启动流程图 编辑:程序博客网 时间:2024/05/17 15:57
----------------------Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
事务定义:
事务是单个的工作单元。如果某一事务成功,则在该事务中进行的所有数据更改均会
提交,成为数据库中的永久组成部分。如果事务遇到错误且必须取消或回滚,则所有
数据更改均被清除。
事务三种运行模式:
自动提交事务
每条单独的语句都是一个事务。
显式事务
每个事务均以 BEGIN TRANSACTION 语句显式开始,
以 COMMIT 或 ROLLBACK 语句显式结束。
隐性事务
在前一个事务完成时新事务隐式启动,但每个事务仍以 COMMIT 或 ROLLBACK 语句
显式完成。
事务就是负责把一系列操作看做一个独立的逻辑单元,这些操作要么同时成功,要么同时失败。下面是一个经典的例子:
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)
end
else
raiserror (
'转出账号不存在'
,16,1)
---------------------- Windows Phone 7手机开发、.Net培训、期待与您交流! ----------------------
详细请查看:http://edu.csdn.net/heima
- 黑马程序员-SQL事务处理
- 黑马程序员-SQL
- 黑马程序员-SQL入门
- 黑马程序员-SQL
- 黑马程序员-SQL入门
- 黑马程序员--SQL基础
- 黑马程序员--SQL编程
- 黑马程序员--SQL基础
- 黑马程序员SQL函数
- 黑马程序员-Sql Server
- SQL事务处理
- SQL事务处理
- sql事务处理
- SQL事务处理
- sql事务处理
- SQL事务处理
- SQL事务处理
- SQL 事务处理
- 操作元数据
- Thrift的安装
- 记录spring mvc搭建
- 海量数据处理
- 源代码分析工具推荐Understand
- 黑马程序员-SQL事务处理
- js中push使用 (数组)
- GWT MVP 学习笔记
- mybatis批量入库
- 初学者如何开发出高质量J2EE系统
- 有阴影的按钮
- 哲理故事与管理之道(19)-合理施压激发下属的工作动力
- 虚拟机3中上网设置-bridged
- 关于内核中此宏list_for_each_entry的说明