Verwenden Sie einen After-Insert-Trigger. Treten Sie über den inserted
bei Pseudo-Tabelle zu Tb
auf dem Primärschlüssel. Aktualisieren Sie dann die Werte von desc. Etwas wie:(Aber darf nicht kompilieren)
CREATE TRIGGER TbFixTb_Trg
ON Tb
AFTER INSERT
AS
BEGIN
UPDATE Tb
SET DESC = SomeTransformationOf(i.DESC)
FROM Tb
INNER JOIN inserted i on i.Id = Tb.Id
END
GO
Dieser Trigger erfolgt nach dem Einfügen, aber vor insert
Aussage vervollständigt. Die neuen, falschen Werte sind also bereits in der Zieltabelle abgelegt. Dieser Trigger muss nicht geändert werden, wenn Spalten hinzugefügt, gelöscht usw. werden.
Vorbehalt Integritätseinschränkungen werden erzwungen, bevor der After-Trigger ausgelöst wird. Sie können also keine Check-Einschränkung setzen, um die richtige Form von DESC zu erzwingen. Weil dies dazu führen würde, dass die Anweisung fehlschlägt, bevor der Auslöser die Möglichkeit hat, etwas zu beheben. (Bitte überprüfen Sie diesen Absatz noch einmal, bevor Sie sich darauf verlassen. Es ist eine Weile her, dass ich einen Auslöser geschrieben habe.)