MySQL Trigger für eine Spalte

Dimax

Top Contributor
Guten Tag,
versuche seit einiger Zeit ein Trigger für nur eine Spalte zu erstellen,jedoch habe ich im Internet nichts gefunden.
Aufgabe: Ein Trigger zu erstellen der die Spalte 'gehen' in der Tabelle überwacht und beim Update an dieser Spalte in die Spalte 'arbzeit' -
Ergebnis von ( Zeitintervall zwischen 'kommen' und 'gehen') - 'pause'
-eintragen.
Mein Versuch :
Code:
delimiter $$
create trigger updt_arbzeit after update on pers.arbeits_zeiten//wie ich verstehe wird der Trigger auf jedes Update reagieren brauche aber nur auf Update in 'gehen' zu reagieren.
for each row
begin
update pers.arbeits_zeiten set arbzeit=timediff(timediff(kommen,gehen),pause);//bin mir nicht sicher ob das der richtige Weg ist so die Differenz zwischen Stunden  und Pause  zu ausrechnen
end
$$delimiter;
Danke im Voraus.
 
Zuletzt bearbeitet:
wie ich verstehe wird der Trigger auf jedes Update reagieren brauche aber nur auf Update in 'gehen' zu reagieren.
Der Trigger wird bei jedem Update ausgelöst. Du könntest aber entsprechende Fallunterscheidungen einbauen, damit nur bei den gewünschten Spaltenänderungen etwas passiert. Mit OLD. und NEW. kannst du ja auf den alten und neuen Inhalt jeder Spalte zugreifen.
Ich kann mir nicht vorstellen, dass MySQL ein Update im After Update Trigger akzeptiert.
 
Danke Meniskusschaden.Habe gelöst mit deiner Hilfe.Jetzt sieht es so aus :
Code:
DELIMITER $$
CREATE  TRIGGER `arbeits_zeiten_BEFORE_UPDATE` BEFORE UPDATE ON `arbeits_zeiten` FOR EACH ROW 
BEGIN
    set new.arbzeit=timediff(timediff(new.gehen,new.kommen),new.pause);
END
$$ DELIMITER;
Alles läuft.
 

Neue Themen


Zurück
Oben