Определяемая пользователем переменная в запросе INSERT для MySQL

StackOverflow https://stackoverflow.com//questions/10704527

Вопрос

Мне нужно использовать пользовательскую переменную в запросе INSERT для MySQL, смотрите пример ниже:

INSERT INTO `posts`(`id`) VALUES(NULL);
SET @last_insert_id = LAST_INSERT_ID();
INSERT INTO `comments`(`id`, `post_id`) VALUES(NULL, "@last_insert_id");

Этот пример не работает и вставлен 0.Что я делаю не так?

Это было полезно?

Решение

Нет необходимости сохранять его в переменной.Вы можете просто позвонить LAST_INSERT_ID() внутри следующего INSERT заявление.

INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, LAST_INSERT_ID());

...если только у вас нет нескольких вставок для выполнения с использованием этого идентификатора.

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

INSERT INTO `posts`(`id`) VALUES (NULL);
SET @last_insert_id = LAST_INSERT_ID();
/* Several new entries using the same @last_insert_id */
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, @last_insert_id);
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top