【发布时间】:2014-11-21 19:58:56
【问题描述】:
我有一个在 Oracle 11g DB 上运行的插入语句,如下所示:
<insert id="insertSelective" parameterType="myObj">
<selectKey keyProperty="seq_id" order="AFTER" resultType="Long">
SELECT mySeq.currval FROM dual
</selectKey>
INSERT INTO myTable
<include refid="myValues"/>
</insert>
如果多个线程在不同的会话中运行,一个线程是否有可能获得由其他会话递增的序列值?
换句话说,MyBatis 是否允许/阻止位于某个<insert> 标记中的INSERT INTO 和<selectKey> 语句之间的另一个INSERT INTO 语句?
关于 PostgreSQL here 有一个类似的问题。但是,由于所有会话都共享 Oracle 序列,因此我不能相信数据库会给我当前会话中最后插入的值。
【问题讨论】:
标签: java multithreading oracle mybatis