一.问题描述:
在oracle使用insert增加数据时,使用sequence自增时报错ORA-02287: 此处不允许序号
源代码:
<insert id="insert">
INSERT INTO
sysmgtdb.PUB_DICTTYPE(ID,CODE,NAME,VERSION,START_TIME,END_TIME,CREATOR_ID,CREATE_DATE,IS_VALID,NOTES)values(
(select SEQ_PUB_DICTTYPE.nextval from dual),
#{CODE,jdbcType=VARCHAR},
#{NAME,jdbcType=VARCHAR},
#{VERSION,jdbcType=VARCHAR},
#{START_TIME,jdbcType=DATE},
#{END_TIME,jdbcType=DATE},
#{CREATOR_ID,jdbcType=NUMERIC},
sysdate,
#{IS_VALID,jdbcType=NUMERIC},
#{NOTES,jdbcType=VARCHAR}
)
</insert>
二.问题分析:
查了相关大佬的方法,应该是与sequence格式相违背
三.问题解决:
<insert id="insert">
INSERT INTO
sysmgtdb.PUB_DICTTYPE(ID,CODE,NAME,VERSION,START_TIME,END_TIME,CREATOR_ID,CREATE_DATE,IS_VALID,NOTES)
SELECT sysmgtdb.SEQ_PUB_DICTTYPE.nextval ,
#{CODE,jdbcType=VARCHAR},
#{NAME,jdbcType=VARCHAR},
#{VERSION,jdbcType=VARCHAR},
#{START_TIME,jdbcType=DATE},
#{END_TIME,jdbcType=DATE},
#{CREATOR_ID,jdbcType=NUMERIC},
sysdate,
#{IS_VALID,jdbcType=NUMERIC},
#{NOTES,jdbcType=VARCHAR}
FROM dual
</insert>