Frage MySQL Trigger

  • Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

DoTTi_L

Neues Mitglied
23 Januar 2016
9
1
3
20
#1
Hallo!

Ich habe 22 Tabellen und ich möchte, dass der letzte Eintrag jeder Tabelle in einer weiteren Tabelle steht. Sozusagen einen "Live-Tabelle" der neuesten Werte.

Zur Zeit mach ich es so, dass ich mit einem "INSERT" die Werte in die richtige Tabelle schreibe und danach mit einem "UPDATE" den Wert nochmal in die "Live-Tabelle" schreibe.
Nur hab ich von dem Trigger erfahren und wollte wissen ob es möglich ist, den Wert den ich per "INSERT" in eine Tabelle schreib automatisch auch in die "Live-Tabelle" zu schreiben mit einem Trigger.
Ich hab schon ein bisschen herumprobiert, und schaffe es einen von mir definierten Wert automatisch einzutragen, jedoch schaffe ich es nicht eine Variable zu erzeugen die den letzten Wert beinhaltet. Phpmyadmin sagt mir bei DECLARE: "Unerkannte Statement-Typ(Bei DECLARE)".

Ich habe eine MySQL-Datenbank und auch phpmyadmin installiert.
Hoffe man versteht was ich meine.

Mit freundlichen Grüßen
Alex
 
Zuletzt bearbeitet:

DoTTi_L

Neues Mitglied
23 Januar 2016
9
1
3
20
#3
Code:
CREATE TRIGGER `test1` AFTER INSERT ON `b1`
 FOR EACH ROW UPDATE hesi.b_live SET val=1 WHERE detector = 'b1'
So funktioniert der Trigger, nur statt der 1 bei "val=1" sollte der zuletzt eingetragene Wert stehen. Also das Ergebnis dieser Abfrage "SELECT id FROM b1 ORDER BY id DESC LIMIT 1".

hesi ist der Name der Datenbank und b1 bis b22 sind Tabellen. Die Tabelle "b_live" soll die neuersten Werte beinhalten.
 

DoTTi_L

Neues Mitglied
23 Januar 2016
9
1
3
20
#5
Vielen Dank!!!
Es hat funktioniert, und auch so das ich es nachvollziehen kann(Denk ich mal).

Hier der Trigger:
Code:
CREATE TRIGGER `test2` AFTER INSERT ON `b1`
 FOR EACH ROW UPDATE `b_live` SET `val` = (SELECT `val` FROM `b1` ORDER BY `id` DESC LIMIT 1) WHERE `b_live`.`id` = 1
Nur das mit "BEGIN" und "END" hat bei mir nicht geklappt, jedoch geht es auch ohne.
 
Zustimmungen: threadi