学习事务
2010-01-22 19:10 三皮开发时 阅读(172) 评论(0) 编辑 收藏 举报事务和存储过程的联系
create procedure SP_Transaction
@AccountBalance float,
@AccountName nchar(20)
as
--声明一个变量用来标记事务,如果更改数据没错就提交事务,否则回滚
declare @Sign bit
select @Sign=0
--事务的开始
begin transaction
--修改 客户ID=1 的 账户余额=100
update 客户 set 账户余额=@AccountBalance where 客户ID=1
--如果没错的话就修改 客户ID=2 的账户 姓名=’李建‘
if @@error=0 and @@rowcount=1 --@@error 表示无错误,--@@rowcount 表示影响行
begin
--修改 客户ID=2 的账户 姓名=’李建‘
update 客户 set 姓名=@AccountName where 客户ID=2
--如果没错的话 GO ON....
if @@error=0 and @@rowcount=1
select @Sign=1
end
if @Sign=1
commit transaction
else rollback transaction
exec SP_Transaction
@AccountBalance=100.0000,
@AccountName='李建'
drop procedure SP_Transaction
--不同数据库的事务
begin transaction
declare @sign bit
select @sign=0
use ado
update 客户 set 账户余额=100 where 客户ID=2
use Student
insert into Student values(6,'ado','男','21','CS')
select @sign=1
if @sign=1
commit transaction
else
rollback transaction
--use Student
--delete Student where Sno=5
--update Student set Sno=5 where Sno=6
要使用--分布式事务
需要
添加引用 TransactionScope
才能
using System.TransactionScope
控制面板--管理工具--服务--找到Distributed Transaction Coordinator-- 手动
在doc下 net start msdtc
然后才能编译程序