1. Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!
    Information ausblenden

Frage MySQL Trigger

Dieses Thema im Forum "Datenbanken - z.B. MySQL" wurde erstellt von DoTTi_L, 4 Januar 2018.

  1. DoTTi_L

    DoTTi_L Neues Mitglied

    Registriert seit:
    23 Januar 2016
    Beiträge:
    6
    Punkte für Erfolge:
    3
    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: 4 Januar 2018
    Werbung:

    Jetzt registrieren, damit diese Werbung verschwindet
  2. threadi

    threadi Moderator Team Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    15.196
    Punkte für Erfolge:
    83
    Wie sieht denn dein Trigger-Statement aus?
     
  3. DoTTi_L

    DoTTi_L Neues Mitglied

    Registriert seit:
    23 Januar 2016
    Beiträge:
    6
    Punkte für Erfolge:
    3
    Code (text):
    1. CREATE TRIGGER `test1` AFTER INSERT ON `b1`
    2.  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.
     
  4. threadi

    threadi Moderator Team Moderator

    Registriert seit:
    20 Oktober 2006
    Beiträge:
    15.196
    Punkte für Erfolge:
    83
  5. DoTTi_L

    DoTTi_L Neues Mitglied

    Registriert seit:
    23 Januar 2016
    Beiträge:
    6
    Punkte für Erfolge:
    3
    Vielen Dank!!!
    Es hat funktioniert, und auch so das ich es nachvollziehen kann(Denk ich mal).

    Hier der Trigger:
    Code (text):
    1. CREATE TRIGGER `test2` AFTER INSERT ON `b1`
    2.  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.
     
    threadi gefällt das.