Utilisez un déclencheur après insertion. Joindre à partir du inserted
pseudo table en Tb
sur la clé primaire. Ensuite, mettez à jour les valeurs de desc. Quelque chose comme :(Mais peut ne pas compiler)
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
Ce déclencheur se produit après l'insertion, mais avant insert
déclaration se termine. Ainsi, les nouvelles valeurs incorrectes sont déjà placées dans la table cible. Ce déclencheur n'aura pas besoin de changer lorsque des colonnes sont ajoutées, supprimées, etc.
Mise en garde Les contraintes d'intégrité sont appliquées avant que le déclencheur after ne se déclenche. Vous ne pouvez donc pas mettre de contrainte de vérification pour appliquer la forme appropriée de DESC. Parce que cela entraînerait l'échec de l'instruction avant que le déclencheur n'ait une chance de réparer quoi que ce soit. (Veuillez vérifier ce paragraphe avant de vous y fier. Cela fait un moment que je n'ai pas écrit de déclencheur.)