SQLSetprop(m.lnAccHandle,[Transactions],2)
SQLSetprop(m.lnSetHandle,[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,外部事务
SQLSetprop() 是VFP,外部事务
外部事务在外面, 内部事务在里面。。 SQLEXEC如果出错了,就调用 rollback tran 。。。 然后DisconnectRollback 决定所有的句柄都回滚了。。