VFP不同句柄 同一事务处理 统一提交或回滚

时间:2021-03-21 03:19:08
SQLSetprop(m.lnAccHandle,[Transactions],2)
SQLSetprop(m.lnSetHandle,[Transactions],2)

SQLSetprop(m.lnAccHandle,[DisconnectRollback],.T.)
SQLSetprop(m.lnSetHandle,[DisconnectRollback],.T.)

m.lcToken = []
SQLExec(m.lnAccHandle,"begin tran")
SQLExec(m.lnAccHandle,"{call sp_getbindtoken(?@lcToken)}")
SQLExec(m.lnSetHandle,"{call sp_bindsession(?lcToken)}")

SQLExec(m.lnSetHandle,"...")
SQLExec(m.lnAccHandle,"...")

SQLExec(m.lnAccHandle,"commit tran")
Sqlcommit(m.lnAccHandle)
Sqlcommit(m.lnSetHandle)

* Sqlrollback(m.lnAccHandle)
* Sqlrollback(m.lnSetHandle)

 
SQLExec(m.lnAccHandle,"begin tran")
这是SQLServer内部事务
SQLSetprop() 是VFP,外部事务
外部事务在外面, 内部事务在里面。。  SQLEXEC如果出错了,就调用 rollback tran  。。。 然后DisconnectRollback 决定所有的句柄都回滚了。。