参考此链接http://msdn.microsoft.com/en-us/library/ms947432.aspx
我假设的示例代码可以工作,因为它发布在 Microsoft 的网站上。
&& Start a VFP transaction and a transaction on the server.
Begin Transaction && FoxPro Start Trans Command
=SQLExec(nConnection, 'BEGIN TRANSACTION') && SQL Start Trans Commnad
&& Update changes to MyTable.
lEverythingOK = TableUpdate( 2, .F., 'rv_MyView' )
If lEverythingOK
&& Update changes to MyOtherTable.
lEverythingOK = tableupdate( 2,.F.,'rv_MyOtherView')
EndIf
&& End the transaction on the server and VFP.
If lEverythingOK
=SQLExec(nConnection, 'COMMIT') && SQL COMMIT COMMAND
End Transaction && Foxpro COMMIT COMMAND
Else
=SQLExec( nConnection, 'ROLLBACK' ) && SQL ROLLBACK COMMAND
RollBack && FoxPro ROLLBACK COMMAND
EndIf
此示例基于 MS SQL 和 Foxpro 使用 Remote View。我想使用 MYSQL 和 Foxpro 使用 Remote View 重新创建它。问题是如果我发出命令 TableUpdate,即使我还没有发出 =SQLExec(nConnection, 'COMMIT') 命令,记录也会被提交到 MYSQL 服务器。我正在使用 INNODB 引擎。请注意,如果我省略 TableUpdate 命令,我可以从 MYSQL 提交或回滚我的事务。我希望不要删除命令 TableUpdate 以捕获记录中的错误,以便在将其提交到 MYSQL 服务器之前不必检查记录的错误记录。
谢谢。