Variável definida pelo usuário em uma consulta INSERT para MySQL
-
13-12-2019 - |
Pergunta
Preciso usar variável definida pelo usuário em uma consulta INSERT para MySQL, veja um exemplo abaixo:
INSERT INTO `posts`(`id`) VALUES(NULL);
SET @last_insert_id = LAST_INSERT_ID();
INSERT INTO `comments`(`id`, `post_id`) VALUES(NULL, "@last_insert_id");
Este exemplo não funciona e inseriu 0.O que estou fazendo de errado?
Solução
Não há necessidade de armazená-lo em uma variável.Você pode simplesmente ligar LAST_INSERT_ID()
dentro do seguinte INSERT
declaração.
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, LAST_INSERT_ID());
...a menos que você tenha várias inserções para executar usando esse ID.
Nesse caso, a sintaxe adequada para usar a variável é fazê-lo sem aspas:
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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow