关于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
这样虽然不能保证百分百的数据一致 但可以选用