Använd en efterinsättningsavtryckare. Gå med från den inserted
pseudotabell till Tb
på primärnyckeln. Uppdatera sedan värdena för desc. Något som:(Men kanske inte kompilerar)
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
Denna utlösare sker efter att infogningen har skett, men före insert
uttalandet slutförs. Så de nya, felaktiga värdena är redan placerade i måltabellen. Denna utlösare behöver inte ändras när kolumner läggs till, tas bort, etc.
Varning Integritetsbegränsningar upprätthålls före efterutlösarbränderna. Så du kan inte sätta på en kontrollbegränsning för att upprätthålla den korrekta formen av DESC. Eftersom det skulle få uttalandet att misslyckas innan utlösaren har en chans att fixa något. (Dubbelkolla det här stycket innan du litar på det. Det var ett tag sedan jag skrev en utlösare.)