Ich habe in
MySQL einen BEFORE UPDATE-Trigger geschrieben und versuche nun, diesen auch in
MSSQL einzusetzen. Leider ist das nicht so einfach wie erhofft, daher bitte ich um Unterstützung durch einen
MSSQL-Experten. Kurz zur Logik: es gibt ein Feld "uid", das durch ein Datenbank-Update zunächst NULL ist. Bei künftigen Updates soll dann Folgendes geschehen:
- Feld ist nicht NULL? Alten Wert behalten, ggf. neuen verwerfen
- Feld ist NULL, und es wurde ein Wert übergeben? Dann diesen übernehmen
- Feld ist NULL, kein Wert übergeben? Dann einen automatisch ermittelten schreiben
In
MySQL sieht das bei mir so aus:
SQL-Code:
CREATE TRIGGER `Tabelle_KEEP_UID` BEFORE UPDATE ON Tabelle FOR EACH ROW
BEGIN
DECLARE uidval varchar(36);
IF (OLD.uid IS NOT NULL) THEN
SET uidval = OLD.uid;
ELSE
IF (NEW.uid IS NOT NULL) THEN
SET uidval = NEW.uid;
ELSE
SET uidval = lower(UUID());
END IF;
END IF;
SET NEW.uid = uidval;
END
NEW und OLD gibt es in dieser Form bei MS nicht, da muss man wohl auf die "inserted"- bzw. "deleted"-Tabellen zugreifen. Leider scheitern alle meine bisherigen Versuche entweder an der Syntax oder der Logik oder beidem. Kann mir jemand helfen?