如何从mysql事务中获取存储的变量值

时间:2015-04-01 13:30:01

标签: mysql transactions

我为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连接器(如果重要的话)。

1 个答案:

答案 0 :(得分:1)

MySQL变量是会话范围的,只要您使用相同的连接,就可以在任何地方执行以下操作:

SELECT @KEY;

有关详情,请参阅手册:https://dev.mysql.com/doc/refman/5.0/en/user-variables.html