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?

War es hilfreich?

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