Created by Jerry Wang, last modified on Jun 13, 2014

假设有数据库表ZUPDATE_TEST1和ZUPDATE_TEST2 需要同时update,理论上有下列几种方式.
本文模拟了表2 执行update的上下文如果有fatal exception发生的情况( 通过在update 表2的function module里人为加上ASSERT 1 = 0 的语句),目的是检查表1和表2的更新是否真正persist到数据库里。

1. 表1在normal的work process里进行update,表2通过update function module进行update

REPORT ZUPDATE_NORMAL_AND_UPDATE.
PARAMETERS: index type int4 OBLIGATORY.
data: ls_data type zupdate_test2.
ls_data-myindex = index.
ls_data-text = 'test' && index.
insert ZUPDATE_TEST1 FROM ls_Data.
WRITE: / 'result: ', sy-subrc.
CALL FUNCTION 'ZUPDATE_TEST2' IN UPDATE TASKEXPORTINGindex = index.
COMMIT WORK AND WAIT.
FUNCTION ZUPDATE_TEST2.
data: ls_data type zupdate_test2.
ls_data-myindex = index.
ls_data-text = 'test' && index.
insert ZUPDATE_TEST2 FROM ls_Data.
ASSERT 1 = 0.
ENDFUNCTION.

结果: 表1成功更新,表2更新失败( 对应的entry未插入到数据库里)

2. 表1和表2分别在不同的两个update function module里更新,表2更新的update function module里有fatal exception发生.

REPORT ZUPDATE_TWO_UPDATE_CALL.
PARAMETERS: index type int4 OBLIGATORY.
CALL FUNCTION 'ZUPDATE_TEST1' IN UPDATE TASKEXPORTINGindex = index.
CALL FUNCTION 'ZUPDATE_TEST2' IN UPDATE TASKEXPORTINGindex = index.
COMMIT WORK AND WAIT.

结果: 表1和表2均未更新。

3. 表1和表3的更新放在同一个update function module里

REPORT ZUPDATE_IN_SINGLE_CALL.
PARAMETERS: index type int4 OBLIGATORY.
CALL FUNCTION 'ZUPDATE_TEST_BOTH' IN UPDATE TASKEXPORTINGindex = index.
COMMIT WORK AND WAIT.
FUNCTION ZUPDATE_TEST_BOTH.
data: ls_data type zupdate_test1.
ls_data-myindex = index.
ls_data-text = 'test' && index.
insert ZUPDATE_TEST1 FROM ls_Data.
data: ls_data1 type zupdate_test2.
ls_data1-myindex = index.
ls_data1-text = 'test' && index.
insert ZUPDATE_TEST2 FROM ls_Data1.
ASSERT 1 = 0.
ENDFUNCTION.

结果:表1和表2均未更新

几种多数据库表update的方式测试相关推荐

  1. Form表单, 4种常见的表单提交方式

    浏览器行为:Form表单提交 1.form表单常用属性 1 2 3 4 action:url 地址,服务器接收表单数据的地址 method:提交服务器的http方法,一般为post和get name: ...

  2. 使用数据库表查询的方式直接获得CRM服务订单的sold to party信息

    Suppose I need to get this service order's Sold to party info: Here below is how-to: (1) get order 8 ...

  3. 达梦数据库表新增字段速度测试

    给表新增字段是一项日常需求,数据库在这种DDL的资源消耗还是很大的,达梦数据库在新增字段方面有些学习了oracle 11g的思路. 达梦数据库提供了参数 ALTER_TABLE_OPT 来控制添加字段 ...

  4. 一种可以避免数据迁移的分库分表scale-out扩容方式

    原文地址:http://jm-blog.aliapp.com/?p=590 目前绝大多数应用采取的两种分库分表规则 mod方式 dayofweek系列日期方式(所有星期1的数据在一个库/表,或所有?月 ...

  5. Hibernate中自动生成数据库表的两种方式

    第一种方式:Hibernate中利用工具类自动生成数据库表 1.建好POJO object, XML Mapping File,配置文件(hibernate.cfg.xml). 2.编写工具类 imp ...

  6. mysql数据库有几种删除方式_sql有几种删除表数据的方式

    有几种删除表数据的方式? truncate.delete和drop都可以删除数据. TRUNCATE TABLE删除表中的所有行,而不记录单个行删除操作. TRUNCATE TABLE 与没有 WHE ...

  7. Activiti6自学之路(五)—— 部署流程资源的四种方式及数据库表更新情况

    创建了流程图资源后, 一般我们需要对创建的资源如(leave.bpmn.leave.png)进行部署,部署方式我这里列出四种方式,前三种为单个流程资源的部署,第四种方式可以同时部署多个流程资源. 一. ...

  8. Navicat premium查看数据库表中文注释的两种方式

    有时候我需要查看数据库表中文注释,来确定每个表存的是哪个模块的数据,确保测试时对数据库查询操作无误. 这个操作我忘记了,此处做一个记录 方式一:通过sql语句来,前提是你知道是哪个表,这种方式不容易改 ...

  9. 知行EDI系统如何通过中间数据库表方式集成金蝶ERP

    金蝶ERP作为目前使用最广泛的业务系统之一,面向不同的服务群体有不同类别的软件,主要有企业管理软件.协同管理软件.政府非盈利组织管理软件.夯实的数据整合管理能力和应对不同业务的实施灵活性,让金蝶ERP ...

最新文章

  1. 远程办公,为什么一直不被公司普遍接受?
  2. linux给文件赋权限找不到,linux 文件赋权限
  3. 使用 jQuery UI Widget Factory 编写有状态的插件(Stateful Plugins)
  4. 自己动手架设linux下Web服务器(图)4
  5. 想学高级软件测试去哪里学,软件测试要学多久
  6. JVM-类加载、GC回收机制
  7. 使用Automake,Autoconf生成Makefile
  8. Java小游戏 超级玛丽源码分享
  9. 《Java编程规范学习笔记》
  10. 企业盈利能力五大指标之:净利润现金流比率
  11. MOOC有效沟通技巧答案(全)
  12. HTML5小游戏程序案例--冰桶挑战h5案例
  13. 【OptiX】第6个示例 折射,玻璃材质
  14. postfix各类故障详细分析与解决
  15. 沐风老师3DMAX网球建模教程
  16. web后台管理系统框架
  17. TCP实现可靠传输的实现
  18. 纯原生 js 简易 实现 鼠标拖尾效果
  19. nginx 配置 https双向认证
  20. mapinfo常用功能系列讲解——(3)统计线段长度(SQL统计法)

热门文章

  1. sonar api 获取质量数据
  2. springMVC通过spring.xml对属性注入bean值(工厂模式)
  3. Latex指南(part2)--Latex入门之组织文档结构
  4. 《自卑与超越》读书笔记(part1)--行为举止永远受到人生意义的制约
  5. 51单片机 简易光电循迹小车
  6. 谈谈 JavaScript 中的空值合并操作符 Nullish coalescing operator
  7. SAP UI5 应用开发教程之十二 - 使用 CSS 类对 UI 进行进一步美化
  8. SAP Spartacus在某些屏幕尺寸下无法正常工作的原因分析
  9. SAP Spartacus organization unit list抬头显示所有unit的标题实现
  10. Spring 基于注解(annotation)的配置之@Autowired注解