求mysql自增字段,主子表同时保存的解决方法

道光2008 2009-12-30 05:11:25
现有主表a,子表sub_a,中间有a_id 存在关联,现在java程序中需要主子表同事保存,而且存在多个子记录。
不用hibernate的处理方式,有其他方式吗?处理方式不能使用先保存主表,后获取id,再赋值子表外键,保存的方式。
必须同时保存。
...全文
192 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
hackersun12345 2010-01-21
  • 打赏
  • 举报
回复
“LAST_INSERT_ID是基于Connection的,只要每个线程都使用独立的Connection对象,LAST_INSERT_ID函数将返回该Connection对AUTO_INCREMENT列最新的insert or update操作生成的第一个record的ID。这个值不能被其它客户端(Connection)影响,保证了你能够找回自己的 ID 而不用担心其它客户端的活动,而且不需要加锁。”

文章没看完,你的是对的。
hackersun12345 2010-01-21
  • 打赏
  • 举报
回复
LAST_INSERT_ID()有隐含BUG,如果有多用户在批量操作有自增字段时,取到的自增LAST_INSERT_ID有可能不是自己想要的。
hackersun12345 2010-01-21
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 warison2008 的回复:]
自己找到解答方案啦,使用LAST_INSERT_ID()函数
[/Quote]
我现在的项目中也有这个需求,后来没找到好的解决办法,存在主表和子表关系时就没用自增字段了,惭愧!
LAST_INSERT_ID()函数,学习下……
道光2008 2009-12-31
  • 打赏
  • 举报
回复
自己找到解答方案啦,使用LAST_INSERT_ID()函数
wanglf1207 2009-12-30
  • 打赏
  • 举报
回复
触发器
liguangwen86 2009-12-30
  • 打赏
  • 举报
回复
不管你用什么处理,都是先往主表插入数据,获得主键值再往子表查,只是可以用一条sql语句完成!sql参照
declare @id bigint
insert into a (字段名,字段名) values
(值,值)
select @id=@@identity//主键值
insert into sub_a (字段名,字段名)values
('值',@id)
crazylaa 2009-12-30
  • 打赏
  • 举报
回复
难得见你发贴啊。
存储过程。
除非你的mysql版本不支持存储过程。

67,515

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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