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

How to get stored variable value from mysql transaction

我已经为 mySQL InnoDB 引擎编写了一个事务。 它在 table 中有一个带有自动生成密钥的插入,而不是另一个使用我使用 LAST_INSERT_ID() 获得的自动生成密钥的插入。 现在,在第二次插入之后,我有几个插入需要一个外键,用于从我插入的最后一个 table 自动生成的键。 所以我所做的是做一个变量并使用它是所有这些。 现在,我需要在我的 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 连接器(如果重要的话)。

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

SELECT @KEY;

更多信息,手册是你的朋友:https://dev.mysql.com/doc/refman/5.0/en/user-variables.html