关于 在IBATIS中 mysql insert 主键问题

ironlee 2010-10-11 08:36:59
SQL: insert into a ( value ) values ( concat( 'abc' , LAST_INSERT_ID() ) )

问题是:此sql语句直接运行是没有问题的 LAST_INSERT_ID()可以获取最新的主键的
但是同样的sql在IBATIS 运行时 总是LAST_INSERT_ID()获得 0

不知道为什么 各位大侠能否说明一下,并且给个相应的解决方案

小弟在此 谢过了
...全文
342 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
ironlee 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 acmain_chm 的回复:]

那只是个表达的方式,告诉你取出最大值+1


insert into a ( value ) select concat('abc',max(id)) from tablex
[/Quote]
如果插入多个字段呢?
是这样吗
insert into a ( A , B ) VALUES( select concat('abc',max(id)) from tablex , 'B' )
ACMAIN_CHM 2010-10-11
  • 打赏
  • 举报
回复
那只是个表达的方式,告诉你取出最大值+1


insert into a ( value ) select concat('abc',max(id)) from tablex
ironlee 2010-10-11
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 zuoxingyu 的回复:]

LAST_INSERT_ID() 仅在当前SESSION内有效.

程序每次获取的时候都是新连接的话,获取到的永远是0.

你可以用SELECT MAX(ID)+1 FROM A 这样来获取最大的ID。
[/Quote]

insert into a ( value ) values ( concat( 'abc' , MAX(id) + 1 ) )
也不行 报错
zuoxingyu 2010-10-11
  • 打赏
  • 举报
回复
LAST_INSERT_ID() 仅在当前SESSION内有效.

程序每次获取的时候都是新连接的话,获取到的永远是0.

你可以用SELECT MAX(ID)+1 FROM A 这样来获取最大的ID。
ACMAIN_CHM 2010-10-11
  • 打赏
  • 举报
回复
LAST_INSERT_ID() 仅在当前SESSION内有效。你的IBATIS是不是在每次都重新开始的CONNECTION?

56,677

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧