是否可以收集在语句执行期间创建的行?

时间:2019-10-23 17:37:13

标签: java mysql jdbc

我正在寻找可以有效解决此问题的东西:ResultSet rs = con.prepareStatement("INSERT INTO Table (num1,num2,num3) VALUES (1,2,3)").execute();

基本上将您创建的行上的数据设置为变量。显然,ResultSet仅适用于SELECT,但是我想知道是否有一种方法可以存储创建的行,而不是执行单独的查询来查找它们。如果有办法,我一直找不到。

1 个答案:

答案 0 :(得分:1)

在MySQL中,没有为INSERT / UPDATE / DELETE / REPLACE语句生成结果集。

MySQL不支持Microsoft SQL Server中的OUTPUT clause

在MySQL中工作的一种解决方法(尽管仅适用于单行INSERT)是在VALUES子句中嵌入用户变量分配的情况下执行INSERT。

INSERT INTO MyTable (num1, num2, num3) VALUES (@num1:=1, @num2:=2, @num3:=3)

这仍然不会为INSERT语句创建结果集,因此您必须在INSERT之后执行SELECT查询。

SELECT @num1 AS num1, @num2 AS num2, @num3 AS num3

另一种解决方法是在INSERT TRIGGER中对用户变量进行赋值。您不必以这种方式在VALUES子句中进行分配。但是在完成INSERT之后,您仍然必须选择用户变量。这也仅适用于单行INSERT。