[技术讨论] osworkflow并发异常
savefrom
2010-01-22
最近的两二项目发现osworkflow的一个bug问题(小弟才书学浅、各位老大不要BT)。工作流id重复出现。count(id)和max(id)的问题。 1.在oracle下工作流的id可以直接用oracle的 sequence来完成id并发的问题。 2.在sqlserver就很难知道用什么方法来完成。(除非用事务来解决在取工作流id) 本上都是请教其他高人所得。希望大家能给出更好的办法。谢谢。关注。 |
|
fantasy
2010-01-22
使用count(id),工作流ID在删除部分之后,会出现重复ID的情况,而max(id)的效率比较低,会存在同时有两个线程执行SQL的情况。
我觉得可以使用max(id),然后对执行max(id)的SQL语句进行同步,保证每次只有一个线程执行max(id)。 第二使用事务控制,保证每次执行max(id)的时候,表处于锁定状态,但是不知道效率如何。 |
|
savefrom
2010-04-02
在Oracle的情况可以在配置文件中使用Oralce的特性sequence。
<prop key="entry.sequence"> SELECT SEQ_OS_XXXX FROM XXX </prop> <prop key="step.sequence"> SELECT SEQ_OS_XXXXXX FROM XXXXX </prop> 在Orace中做点手脚就哦了。 |
|
fantasy
2010-07-29
savefrom 写道 在Oracle的情况可以在配置文件中使用Oralce的特性sequence。
<prop key="entry.sequence"> SELECT SEQ_OS_XXXX FROM XXX </prop> <prop key="step.sequence"> SELECT SEQ_OS_XXXXXX FROM XXXXX </prop> 在Orace中做点手脚就哦了。 这样不支持多数据库。 |