1. Cookies optimieren die Bereitstellung unserer Dienste. Mit der Nutzung unserer Dienste erklärst Du dich damit einverstanden, dass wir Cookies verwenden. Weitere Informationen
    Information ausblenden
  2. Willkommen im Forum von DIGITAL FERNSEHEN - dem führenden Portal für digitales Fernsehen, Medien und Entertainment. Wenn du hier neu bist, schau dich ruhig etwas um und melde dich an, um am Forengeschehen teilnehmen zu können.
    Information ausblenden

MYSQL-Problem mit Triggern

Dieses Thema im Forum "Computer & Co." wurde erstellt von Gag Halfrunt, 16. Januar 2009.

  1. Gag Halfrunt

    Gag Halfrunt Lexikon

    Registriert seit:
    26. November 2001
    Beiträge:
    22.635
    Zustimmungen:
    9
    Punkte für Erfolge:
    48
    Anzeige
    Moin,

    ich knobel gerade, ob es bei MySQL innerhalb eines BEFORE-UPDATE-Triggers eine Möglichkeit gibt, auf die tatsächlich beim Update übergebenen Werte zuzugreifen.
    OLD und NEW spiegeln ja nur das Vorher/Nachher-Bild wider.

    Ich suche aber eine Möglichkeit zu unterscheiden, ob in dem Update-Statement derselbe Wert übergeben wurde (OLD=NEW) oder ob die Spalte gar nicht im Statement enthalten ist.

    Also die Tabelle sieht z.B. folgendermaßen aus:
    Code:
    A|B|C
    -+-+-
    1|2|3
    Folgende zwei Fälle kann es nun geben:
    Code:
    UPDATE table SET B = [COLOR=red]2[/COLOR], C = 4 WHERE A = 1
    oder eben
    Code:
    UPDATE table SET C = 4 WHERE A = 1
    In beiden Fällen bleibt "B" unverändert auf "2", aber ich möchte herausfinden, ob B in der Query überhaupt angefasst wurde. Denn in beiden Fällen liefert mir im Trigger OLD.B = NEW.B.

    Gag
     
  2. Musikfan

    Musikfan Silber Member

    Registriert seit:
    28. November 2005
    Beiträge:
    718
    Zustimmungen:
    61
    Punkte für Erfolge:
    38
    AW: MYSQL-Problem mit Triggern

    Moin, moin,
    also, meiner Meinung nach wurde B im 1. Fall angefasst und im 2. Fall nicht.
    Im 1. Fall ist ja die SET-Anweisung, dass B mit dem Wert 2 gefüllt werden soll. Dass es der gleiche Wert ist, der vorher schon in B stand, spielt keine Rolle.
    Sicher bin ich mir allerdings auch nicht, aber es gibt ja noch eine RETURNING Klausel, kann es damit herausfinden ?
    Ich kann es zur Zeit leider nicht ausprobieren, da ich MySQL auf dem neuen Rechner noch nicht installiert habe.
     
  3. Gag Halfrunt

    Gag Halfrunt Lexikon

    Registriert seit:
    26. November 2001
    Beiträge:
    22.635
    Zustimmungen:
    9
    Punkte für Erfolge:
    48
    AW: MYSQL-Problem mit Triggern

    Die MySQL-Optimierung sorgt dafür, das in beiden Fällen B nicht angefasst wird. Aber das ist erstmal nebensächlich.

    Im Trigger selber kann nicht erkennen, ob B im Update-Statement überhaupt übergeben wurde, da in den Variablen OLD.B und NEW.B in beiden Fällen "2" steht.

    Das ist der Knackpunkt.