我为mySQL InnoDB引擎编写了一个事务。
它使用自动生成密钥在表中插入,而使用LAST_INSERT_ID()
使用该自动生成密钥的另一个插入。
在第二次插入之后,我有几个插入,需要一个外键来自我插入的最后一个表中的自动生成的键。
所以我所做的是变量并且使用它就是所有这些变量。
现在,我需要在我的Java程序中返回自动生成的键值,以便我可以使用它。
我该怎么做?
我的交易相当大,所以这就是我想做的事情。
start transaction;
insert into a(value) values(123);
insert into b(aid,value) values((select LAST_INSERT_ID()),345);
SET @KEY = ( select LAST_INSERT_ID() ) ;
insert into c(val,fk) values(1,@KEY);
insert into c(val,fk) values(2,@KEY);
insert into c(val,fk) values(3,@KEY);
.....
insert into c(val,fk) values(10,@KEY);
现在我需要在我的程序中返回@KEY
变量值。
它的Java程序我正在使用MySQL的J连接器(如果重要的话)。
答案 0 :(得分:1)
MySQL变量是会话范围的,只要您使用相同的连接,就可以在任何地方执行以下操作:
SELECT @KEY;
有关详情,请参阅手册:https://dev.mysql.com/doc/refman/5.0/en/user-variables.html