Hallo
[...] und dass ein
UPDATE
meines Wissens nach nicht mitSET
arbeitetDas SET ist sogar ein zwingend notwendiger Bestandteil eines Update-Statements.
Stimmt, ich war gedanklich <del>einerseits bei der Schreibweise, die MySQL anbietet und die analog zu INSERT
funktioniert und andererseits</del> bei SET
als Befehl zur Änderung einer Variablen ausßerhalb eines Queries.
Ich sollte Feierabend machen.
also abgesehen von den nicht schlüssigen Dingen, sieht der Code schlüssig aus.
Was ist, wenn der Update-Trigger mit dem UPDATE drin den Update-Trigger triggert?
Gute Frage. Ich benutze in MS SQL einen Trigger AFTER UPDATE
, in dem die Ausführung zusätzlich mit IF UPDATE ([Feldname])
auf die Reaktion auf die Änderung dieses bestimmten Feldes beschränkt wird, dessen Wert zu allem Überfluss innerhalb des Triggers geändert wird. Deine Frage impliziert die Vermutung, dass der Trigger in einer Endlosschleife landen müsste. Das tut er aber nicht.
Zudem setzt der Trigger das Flag immer und nicht nur wenn die beiden Felder geändert wurden.
Wir enden also bei „abgesehen von weiteren als den vorgenannten Bedingungen“. 😀
Bei MySQL jedenfalls würde ich einen BEFORE-Trigger nehmen, aber der MS SQL Server hat sowas wohl nicht. Mit dem kann man Werte vor dem Speichern anpassen.
Die MS-SQL-Doku nennt in dieser Hinsicht FOR
, AFTER
und INSTEAD OF
als mögliche Werte. AFTER
und INSTEAD OF
sind mMn selbsterklärend, zu FOR
schweigt sich die verlinkte Seite allerdings leider aus.
Tschö, Auge
Wenn man ausreichende Vorsichtsmaßnahmen trifft, muss man keine Vorsichtsmaßnahmen mehr treffen.
Toller Dampf voraus von Terry Pratchett