Използвайте спусък след вмъкване. Присъединете се от inserted
псевдо таблица към Tb
на първичния ключ. След това актуализирайте стойностите на desc. Нещо като:(Но може да не се компилира)
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
Това задействане се случва след вмъкването, но преди insert
изявлението завършва. Така новите, неправилни стойности вече са поставени в целевата таблица. Това задействане няма да е необходимо да се променя, когато колоните се добавят, изтриват и т.н.
Предупреждение Ограниченията за интегритет се налагат преди задействането на след тригера. Така че не можете да поставите ограничение за проверка, за да наложите правилната форма на DESC. Защото това би накарало изявлението да се провали, преди тригерът да има шанс да поправи нещо. (Моля, проверете отново този параграф, преди да разчитате на него. Измина известно време, откакто написах тригер.)