Benutzerdefinierte Variable in einer INSERT-Abfrage für MySQL
-
13-12-2019 - |
Frage
Ich muss eine benutzerdefinierte Variable in einer INSERT-Abfrage für MySQL verwenden, siehe Beispiel unten:
INSERT INTO `posts`(`id`) VALUES(NULL);
SET @last_insert_id = LAST_INSERT_ID();
INSERT INTO `comments`(`id`, `post_id`) VALUES(NULL, "@last_insert_id");
Dieses Beispiel funktioniert nicht und es wurde 0 eingefügt.Was mache ich falsch?
Lösung
Es ist nicht erforderlich, es in einer Variablen zu speichern.Sie können einfach anrufen LAST_INSERT_ID()
im Folgenden INSERT
Stellungnahme.
INSERT INTO `comments`(`id`, `post_id`) VALUES (NULL, LAST_INSERT_ID());
...es sei denn, Sie müssen mit dieser ID mehrere Einfügungen durchführen.
In diesem Fall besteht die richtige Syntax für die Verwendung der Variablen darin, dies ohne Anführungszeichen zu tun:
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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow