社区
Java EE
帖子详情
求mysql自增字段,主子表同时保存的解决方法
道光2008
2009-12-30 05:11:25
现有主表a,子表sub_a,中间有a_id 存在关联,现在java程序中需要主子表同事保存,而且存在多个子记录。
不用hibernate的处理方式,有其他方式吗?处理方式不能使用先保存主表,后获取id,再赋值子表外键,保存的方式。
必须同时保存。
...全文
192
7
打赏
收藏
求mysql自增字段,主子表同时保存的解决方法
现有主表a,子表sub_a,中间有a_id 存在关联,现在java程序中需要主子表同事保存,而且存在多个子记录。 不用hibernate的处理方式,有其他方式吗?处理方式不能使用先保存主表,后获取id,再赋值子表外键,保存的方式。 必须同时保存。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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版本不支持存储过程。
MySQL
入门进阶及面试题分析
本阶段
mysql
学习从0基础开始的...
mysql
查询语句聚合,
mysql
表
连接,
mysql
字段
类型,
mysql
表
约束以及
表
结构操作,
mysql
唯一约束非空约束主键约束,
mysql
外键约束和默认约束,
mysql
表
关系(多对多,一对一,一对多)
mysql
同时insert多
表
,且
表
之间存在id关联,如何保证id关联的正确性?
需
求
同时执行三条sql insert语句,分别插入三张不同的
表
中,
表
2的某个
字段
关联
表
1的id,
表
3的某个
字段
关联
表
2的id,三张
表
的id
字段
均为int 自动递增类型。 笨
方法
手动多次执行sql,具体步骤: 1、第一条语句插入完成后,查询出来max(id),给了第二个语句的msgId; 2、第二条语句插入完成后,查询出来max(id),给了第三个语句的templateId。 秒
方法
采用
mysql
提供的系统定义的全局变量@@IDENTITY。 将第二条语句关联第一张
表
的id
字段
值替换为此变量; 将第三条
MyBtis使用selectkey返回插入数据的主键Id来同时向主
表
和子
表
插入数据
方法
在开发中我们会碰到需要同时向主
表
和子
表
插入数据
方法
。那么这时候我们就需要得到主
表
插入行的主键ID。 而selectkey就可以在添加了信息之后返回添加的该条信息的主键值。 <insert id="add" parameterType="Student"> <selectKey keyProperty="id" order="AFTER" resultType="Integer"> SELECT LAST_INSERT_ID() </
Mysql
多个
表
中关联 ID 时,同时插入多
表
用到了 last_insert_id() 插入主
表
内容 insert into cms_document(title,category_id,model_id,description,view,create_time,update_time,status,keyname) values(%s,%s,%s,%s,%s,%s,%s,%s,%s); 插入关联
表
内容 insert into c...
【
MySQL
】
MySQL
表
设计的经验(建议收藏)
作为后端开发,我们经常需要设计数据库
表
。整理了21个设计
MySQL
表
的经验准则,分享给大家,希望大家看完会有帮助。如果没有特殊的理由, 一般都建议将
字段
定义为 NOT NULL。为什么呢?首先,NOT NULL可以防止出现空指针问题。其次,NULL值存储也需要额外的空间的,它也会导致比较运算更为复杂,使优化器难以优化SQL。NULL值有可能会导致索引失效如果将
字段
默认设置成一个空字符串或常量值并没有什么不同,且都不会影响到应用逻辑, 那就可以将这个
字段
设置为NOT NULL。
Java EE
67,515
社区成员
225,878
社区内容
发帖
与我相关
我的任务
Java EE
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
复制链接
扫一扫
分享
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章