JVAV后台获取刚刚插入数据库的记录自增字段,比如ID

柳天俊 发布于 2012/05/30 14:55
阅读 3K+
收藏 0
问题提出

假设数据库有表

A(AID int Identity, ...)

B(BID int ,AID int, ...)

其中A中AID为自增(Identity)字段且作为主键,B中AID即为A表主键。

当写程序时向A表插入一条新数据,并将这条新纪录对应信息写入表B,此时便会有一个问题,在我们写程序时,这条记录的Id我们还不知道,那么如何向表B中写呢。

我现在就要同时往 AB 两张表里插入数据,但是在B表里 要插入 刚刚插入A表这条记录的自增ID,所以我要在后台 获取到 ,然后在写一条SQL语句插入相关信息到B表里,就是现在 一个方法里 执行2条sQL语句 同时操作 2张表。

希望 大神们 给力 求助 急急急急急急急! 谢谢 

 

加载中
0
FoxHu
FoxHu

利用Mysql的last_insert_id()可以这样

insert into A(col2) values("test");
insert into B(bid) select last_insert_id();

 

0
weir2008
weir2008
reflash   一下,再fand.
0
JackyYong
JackyYong
建议先取出A的id, 然后再插入, 再设置B的AID, 再插入
0
水儿
水儿
如果同时给A表插入两条数据,就会出错,建议用uuid 
0
l
lucky.zhangli

可以用jdbc返回插入A表时自动生成的ID。

connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

connection.createStatement().execute(sql, autoGeneratedKeys);

0
caonizxins
caonizxins
用Hibernate 保存A表的时候,会返回刚刚插入A表数据的主键id,也就是AID,这时候再把AID插入B表就可以了。
0
panmingguang
panmingguang

引用来自“lucky.zhangli”的答案

可以用jdbc返回插入A表时自动生成的ID。

connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS);

connection.createStatement().execute(sql, autoGeneratedKeys);

正解, 不过没有 需要判断 返回 , 如果不是insert 会抛 异常
0
陈海洋
陈海洋
Statement.getGeneratedKeys()
0
巴顿
巴顿

主键不一定要自增,可以使用UUID uuid = UUID.randomUUID();

插入一条A表单记录insert into A(id) values(uuid);

插入一条数据,那么uuid就是当前的主键,将uuid插入到B表中不就ok了么?

0
赵渊
赵渊
学习了
返回顶部
顶部