Hi @all,
ich habe versucht einen Trigger zu erstellen, was auch geklappt hat. Allerdings funktioniert indem Trigger LAST_INSERT_ID() nicht. Die Funktion liefert mir immer 0 zurück.
Der Trigger sieht vereinfacht folgendermaßen aus:
Hoffe ihr habt einen Rat für mich.
Ps ich könnte evtl auch MAX() nehmen aber ich weiß nicht ob das irgendwann mir zum Verhängnis wird.
Und ich weiß nicht ob es was ausmacht aber es ist eine InnoDB Tabelle.
*edit
Ohje ich habe die Befürchtung das es nicht gehen wird, nach nochmaligem suchen bei Google mit anderen Suchbegriffen bin ich auf folgendes gestoßen:
Oder habe ich das falsch verstanden? Mein Englisch ist nicht das beste, jedoch denke ich habe ich den Sinn so richtig erfasst.
*edit2
Habe jetzt noch eine andere Lösung gefunden, welche anscheinend funktionieren soll. Jedoch wenn ich das bei mir im Phpmyadmin eingeben will geht das nicht, der Code dafür ist wie folgt:
Aber es kommt immer folgender Fehler:
ich habe versucht einen Trigger zu erstellen, was auch geklappt hat. Allerdings funktioniert indem Trigger LAST_INSERT_ID() nicht. Die Funktion liefert mir immer 0 zurück.
Der Trigger sieht vereinfacht folgendermaßen aus:
PHP:
CREATE TRIGGER `xxx` AFTER INSERT ON `tab`
FOR EACH ROW
INSERT INTO `tab_two` (`page_id`,`menu_id`,`order_id`, `ident_key`) VALUES (LAST_INSERT_ID(), 1, 1, MD5(LAST_INSERT_ID()));
Hoffe ihr habt einen Rat für mich.
Ps ich könnte evtl auch MAX() nehmen aber ich weiß nicht ob das irgendwann mir zum Verhängnis wird.
Und ich weiß nicht ob es was ausmacht aber es ist eine InnoDB Tabelle.
*edit
Ohje ich habe die Befürchtung das es nicht gehen wird, nach nochmaligem suchen bei Google mit anderen Suchbegriffen bin ich auf folgendes gestoßen:
I have to concur with your problem statement. I tried testing your scenario and some variations to it to no avail. I even set up an 'after insert' trigger to stuff the new id1 value into last_insert_id() and that didn't work either. I tried making the column into a real auto_increment column, adding 'OR new.id1 = 0' to the test of whether to calculate a new id1. Id1 got properly calculated but still last_insert_id() did not return a value. It's like what happens inside the trigger stays inside the trigger. You can execute an insert inside a trigger and return an id, but any attempts to get a value to persist to outside the trigger just don't seem to be working.
Oder habe ich das falsch verstanden? Mein Englisch ist nicht das beste, jedoch denke ich habe ich den Sinn so richtig erfasst.
*edit2
Habe jetzt noch eine andere Lösung gefunden, welche anscheinend funktionieren soll. Jedoch wenn ich das bei mir im Phpmyadmin eingeben will geht das nicht, der Code dafür ist wie folgt:
PHP:
DELIMITER $$
CREATE TRIGGER `xxx` AFTER INSERT ON `tab`
FOR EACH ROW BEGIN
DECLARE LAST_ID INT;
SET LAST_ID = LAST_INSERT_ID();
INSERT INTO `tab_two` (`page_id`,`menu_id`,`order_id`, `ident_key`) VALUES (LAST_ID, 1, 1, MD5(LAST_ID));
END$$
DELIMITER ;
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DELIMITER $$
CREATE TRIGGER `xxx` AFTER INSERT ON `tab`
FOR E' at line 1
Zuletzt bearbeitet: