- 浏览: 3305 次
- 性别:
- 来自: 上海
最新评论
-
thomas0104:
sjjxiao 写道如果将JBPM表融入工程,实质上就是重新实 ...
oracle临时表的一个使用场景 -
sjjxiao:
如果将JBPM表融入工程,实质上就是重新实现了工作流,这样的话 ...
oracle临时表的一个使用场景 -
thomas0104:
始终不知道在使用JBPM等工作流产品,与业务数据相关联时,怎样 ...
oracle临时表的一个使用场景
文章列表
最近在项目中碰到个问题,更新过期数据时事务没有回滚。前前后后仔细检查了一遍事务配置,始终没有找出问题所在。最后经过单步调试,总算找到了问题根源:使用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 ...