SQL INSERT не работает с оператором OUTPUT INSERTED - PullRequest
0 голосов
/ 03 апреля 2020

Моя цель - вставить новую строку в таблицу базы данных и немедленно вернуть идентификатор вставленной строки. Я видел некоторые другие сообщения о стеке потока, которые предлагали использовать эту команду:

INSERT INTO selecttable (name) OUTPUT INSERTED.ID VALUES ('aName')

К сожалению, выполнение этой команды завершается неудачно со следующим сообщением об ошибке:

У вас ошибка в вашем SQL синтаксисе; проверьте руководство, соответствующее вашей версии сервера MariaDB, на предмет правильного синтаксиса для использования рядом с 'OUTPUT INSERTED.ID VALUES (' aName ')'

Выполнение команды без оператора вывода работало хорошо:

INSERT INTO selecttable (name) VALUES ('aName')

У вас есть идея, почему вышеприведенная команда не работает?

1 Ответ

0 голосов
/ 03 апреля 2020

В общем, я думаю, что вы используете LAST_INSERT_ID():

INSERT INTO selecttable (name)
    VALUES ('aName');

SELECT LAST_INSERT_ID();

Это несовершенная эквивалентная конструкция. Например, он не очень хорошо работает с несколькими строками. Но это решение MariaDB / MySQL для этой проблемы.

...