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?

¿Fue útil?

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
scroll top