同时提交同时回滚的问题,原题是如果没有卡的信息或是卡里没有钱就不做插入操作;
create procedure myP
as
begin tran
update db1.dbo.tableA
set qty =qty-10
if @eeror<>0
rollback
else
update db2.dbo.tableB
set qty=qty+10
end
if @error<>0
rollback
else
commit tran
----exec myP
2:delcare @er1 int,@er2 int
BEGIN TRANSACTION
Update table1......
select @er1=@@error
Update table2......
select @er2=@@error
if @er1=0 and @er2=0
COMMIT TRANSACTION
else
ROLLBACK TRANSACTION
3:db1和db2在不同的机器上,db1和db2之间作个链接服务器就可以了。使用链接服务器的效果是不是等同于分布式事务呢?
按照各位高手的回复来看,与基于一台服务器的实现方式类似,利用了事务,
那么这个事务是分布式的吗?需要MTS的协助吗?
做服务器连接用sp_addlinkedserver
假设以下操作在DB2所在的服务器上进行
sp_addlinkedserver 'db1ServerName',N'SQL Server'
go
create procedure YourProcedureName
as
declare @DB1Err int
begin tran
insert db1ServerName.DB1..表名 values (....)
set @DB1Err=@@error
insert DB2..表名 values (....)
if @DB1Err<>0 or @@error<>0
rollback tran
commit tran
go