`
sjjxiao
  • 浏览: 3285 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论
文章列表
    最近在项目中碰到个问题,更新过期数据时事务没有回滚。前前后后仔细检查了一遍事务配置,始终没有找出问题所在。最后经过单步调试,总算找到了问题根源:使用truncate删除数据,导致事务被提交。 1、在oracle中删除数据后还能回滚是因为数据被放在了undo表空间。 2、DML = Data Manipulation Language,数据操纵语言,使用undo表空间;    DDL = Data Definition Language,数据定义语言,不使用undo表空间。    delete是DML语句,truncate是DDL语句,DDL语句隐式提交,即使当前事务出错,也无法回滚。
    在上个项目中碰到这样一种情况,需要从工作流中拿出所有符合要求的任务ID,找出所有对应的业务数据标识(作为流程变量存放在流程中),然后根据业务标识查找业务数据做相应处理。在sql语句中使用了in操作,原本单个区域子系统中在办任务量不会很大,一直正常,一段时间后,各种原因需要所有区域系统合并,数据量大涨,in操作应声报错(超出1000限制)。一番考虑,决定使用临时表替换in操作。     始终不知道在使用JBPM等工作流产品,与业务数据相关联时,怎样才是最佳方案。不知各位有什么高见? 在Oracle中,可以创建以下两种临时表: (1) 会话级临时表 CREATE GLOBAL TE ...
Global site tag (gtag.js) - Google Analytics