【发布时间】:2014-07-27 03:11:36
【问题描述】:
用于插入的mybatis映射器代码:
<insert id="insert" parameterType="Shop" useGeneratedKeys="true">
insert into shop(email, pswd, nickname, mobile, city, create_date, status) values (#{email}, #{pswd}, #{nickname}, #{mobile}, #{city}, #{createDate}, #{status})
<selectKey keyProperty="id" order="AFTER" resultType="long">
select currval('shop_id_seq')
</selectKey>
</insert>
数据库是postgresql 9.3。
我的疑问是:没有明确的事务,当我用select currval('shop_id_seq')从序列中检索id时,如果其他线程也在插入,是否有可能得到错误的值?
我认为不会,因为 currval() 函数在当前会话的上下文中运行,而不是全局会话,但我不确定。
【问题讨论】: