首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 网站开发 > asp.net >

关于T-SQL事务的有关问题

2011-12-19 
关于T-SQL事务的问题createPROCEDUREServicesasbegintranupdateaccountsset[money][money]+500where[name

关于T-SQL事务的问题
create   PROCEDURE   Services
as
begin   tran

update   accounts   set   [money]=[money]+500   where   [name]= 'a '

update   accounts   set   [money]=[money]-500   where   [name]= 'c '

commit   tran


我要名字为A的+500钱,名字为C的减500钱.但是我设置了错误就是C不存在.但是我这样执行后A却加了500钱,请问我该如何处理这个错误.
请高手解决

[解决办法]
写错了一个字

update accounts set [money]=[money]-500 where [name]= 'c '

虽然 C 不存在,但这句话没有错误,因此事物并不回滚

[解决办法]
SET XACT_ABORT ON
BEGIN TRANSACTION

COMMIT TRANSACTION
SET XACT_ABORT OFF
[解决办法]
不用事务
@declare @count int
select @count=count(*) from accounts where [name]= 'c '
if @count> 0
begin
update accounts set [money]=[money]+500 where [name]= 'a '
update accounts set [money]=[money]-500 where [name]= 'c '
end

这样虽然不能保证百分百的数据一致 但可以选用

热点排行