Użyj wyzwalacza po wstawieniu. Dołącz z inserted
pseudotabela do Tb
na kluczu podstawowym. Następnie zaktualizuj wartości desc. Coś w stylu:(ale może się nie skompilować)
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
Ten wyzwalacz ma miejsce po wstawieniu, ale przed insert
oświadczenie się kończy. Tak więc nowe, nieprawidłowe wartości są już umieszczone w tabeli docelowej. Ten wyzwalacz nie będzie musiał się zmieniać, gdy kolumny są dodawane, usuwane itp.
Zastrzeżenie Ograniczenia integralności są wymuszane przed uruchomieniem wyzwalacza po. Nie można więc nałożyć ograniczenia sprawdzającego, aby wymusić właściwą formę DESC. Ponieważ spowodowałoby to niepowodzenie instrukcji, zanim wyzwalacz miałby szansę cokolwiek naprawić. (Proszę dokładnie sprawdzić ten akapit, zanim zaczniesz na nim polegać. Minęło trochę czasu, odkąd napisałem wyzwalacz.)