Variable definida por el usuario en una consulta INSERT de MySQL
-
13-12-2019 - |
Pregunta
Necesito utilizar variables definidas por el usuario en una consulta INSERT de MySQL, ver un ejemplo a continuación:
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 ejemplo no funciona y se inserta 0.¿Qué estoy haciendo mal?
Solución
No es necesario almacenarlo en una variable.Usted puede llamar LAST_INSERT_ID()
dentro de los siguientes INSERT
declaración.
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, LAST_INSERT_ID());
...a menos que usted tiene múltiples inserciones a realizar con ese id.
En ese caso, la sintaxis correcta para el uso de la variable es hacerlo sin las comillas:
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 bajo: CC-BY-SA con atribución
No afiliado a StackOverflow