У меня проблема со следующим запросом:
START TRANSACTION;
INSERT INTO posts
(
-- not relevant
)
VALUES
(
-- insert works as intended
);
COMMIT WORK AND CHAIN;
DECLARE @insertId INT; -- this is where i get the syntax error
SET @insertId = LAST_INSERT_ID();
UPDATE posts
SET guid = CONCAT('foo.bar?p=', @insertId)
WHERE id = @insertId;
-- continue to work with the variable
INSERT INTO postmeta(post_id, key, value)
VALUES
(@insertId, ..., ...),
(@insertId, ..., ...),
(@insertId, ..., ...),
(@insertId, ..., ...);
COMMIT WORK;
В основном я вставляю строку, и мне нужно обновить ее, используя автоматически увеличенный идентификатор сразу после вставки (для убедитесь, что я получаю правильное значение из функции LAST_INSERT_ID). Затем мне нужно заполнить другую таблицу, также используя автоматически увеличенный идентификатор. В этом случае я понял, что мне нужно сохранить значение в переменной. Почему я получаю следующее сообщение об ошибке? "У вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем вашей версии сервера MariaDB, рядом с 'DECLARE @insertId INT; SET @insertId = LAST_INSERT_ID ();' в строке 1 «Проблема в том, что я не создаю процедуру или пользовательскую функцию?