Можно ли собирать строки, созданные во время выполнения оператора? - PullRequest
1 голос
/ 23 октября 2019

Я ищу что-то, что будет эффективно для этого: ResultSet rs = con.prepareStatement("INSERT INTO Table (num1,num2,num3) VALUES (1,2,3)").execute();

По существу установка данных в строках, которые вы создали, в переменную. Очевидно, ResultSet работает только для SELECT, но мне было интересно, есть ли способ обрабатывать созданные строки, а не выполнять отдельный запрос для их поиска. Если есть способ сделать это, я не смог его найти.

1 Ответ

1 голос
/ 24 октября 2019

В MySQL нет набора результатов, созданного для операторов INSERT / UPDATE / DELETE / REPLACE.

MySQL не поддерживает предложение OUTPUT , найденное в Microsoft SQL Server.

Обходной путь, который будет работать в MySQL (хотя и только для однострочного INSERT), - выполнить INSERT с присвоением пользовательских переменных, встроенных в предложение VALUES.

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

Это все равно не создастрезультирующий набор для оператора INSERT, поэтому вам нужно будет выполнить запрос SELECT после INSERT.

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

Другой обходной путь - это присвоение пользовательских переменных внутри INSERT TRIGGER. Вам не придется выполнять назначение в предложении VALUES таким образом. Но вам все равно придется ВЫБЕРИТЬ пользовательские переменные после того, как INSERT сделан. Это также будет работать только для однорядной вставки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...