前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >十二行代码教你搞定写双表事务处理,数据管理更专业

十二行代码教你搞定写双表事务处理,数据管理更专业

作者头像
加菲猫的VFP
发布2021-10-08 16:35:25
3.3K0
发布2021-10-08 16:35:25
举报
文章被收录于专栏:加菲猫的VFP

VFP双表事务处理,双表是指本地表和远程表同时加上事务,这样本地表和远程表,要么同时成功,要么同时失败。

事务是为了保证所处理数据的完整性,如n个相关表被同时修改,在保存数据时,要么全部保存,要么都不保存,这只有用事务来实现。

举例:

入库单增加了一个物料,库存表的相应也应该增加。如果入库单保存成功,库存表没有保存成功,便会出现数据不一致。而加上事务之后,如果库存表没有保存成功,入库单的数据也会回滚,便不保存。

用try结构来处理事务,比用IF每句判断要简单明快得多,我见过许多人写的事务,那个就复杂,看得头晕晕的。

VFP双表事务

代码语言:javascript
复制

Begin Transaction  &&临时表事务
Try     
  SQLSetprop(nDatasource,'transactions',2)    &&手动事务处理  
  *-- 此处保存的相关代码   
 
  Sqlcommit(nDatasource)
  SQLSetprop(nDatasource,'transactions',1)    &&自动事务处理
  End Transaction  &&临时表事务结束  
Catch To ex  
  ROLLBACK 
  Sqlrollback(nDatasource) &&出错了,则事务回滚
  SQLSetprop(nDatasource,'transactions',1)    &&自动事务处理 
  ?ex.Message
Endtry

Begin Transaction &&临时表事务 Try SQLSetprop(nDatasource,'transactions',2) &&手动事务处理 *-- 此处保存的相关代码 This.AfterSave() Sqlcommit(nDatasource) SQLSetprop(nDatasource,'transactions',1) &&自动事务处理 End Transaction &&临时表事务结束 Catch To ex llSaveSuccess =.F. ROLLBACK Sqlrollback(nDatasource) &&出错了,则事务回滚 SQLSetprop(nDatasource,'transactions',1) &&自动事务处理 *Throw ex ?ex.Message EndtryBegin Transaction &&临时表事务 Try SQLSetprop(nDatasource,'transactions',2) &&手动事务处理 *-- 此处保存的相关代码 This.AfterSave() Sqlcommit(nDatasource) SQLSetprop(nDatasource,'transactions',1) &&自动事务处理 End Transaction &&临时表事务结束 Catch To ex llSaveSuccess =.F. ROLLBACK Sqlrollback(nDatasource) &&出错了,则事务回滚 SQLSetprop(nDatasource,'transactions',1) &&自动事务处理 *Throw ex ?ex.Message Endtry

在猫框中,想要协调DAL_CA与MSSQLhelper同时拥有事务,只要他们在同一个句柄下就可以操作啦。

代码语言:javascript
复制
oDBSQLhelper=newobject("mssqlhelper","mssqlhelper.prg")

?oDBSQLhelper.datasource  && mssqlhelper自动创建的句柄

oDAL_CA=newobject("dal_ryxx","dal_ryxx.prg","",oDBSQLHelper.datasource)

oDBSQLhelper2=newobject("mssqlhelper","mssqlhelper.prg","",oDBSQLHelper.datasource)

这样oDBSQLhelper,oDAL_CA,oDBSQLhelper2 都处于同一句柄,随时开启事务,一起愉快玩耍。

对了,在框架中,其实连事务都可以不用写,直接SAVE就好。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-09-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 加菲猫的VFP 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档