Bonjour,
Vous pouvez écrire le trigger AFTER UPDATE comme suit :
Code :
CREATE TRIGGER TR_A_I_maTable
ON dbo.maTable
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
UPDATE dbo.maTable
SET telephone = CASE LEN(I.telephone)
WHEN 7 THEN '338' + I.telephone
WHEN 8 THEN '08' + I.telephone
FROM dbo.maTable AS T
INNER JOIN inserted AS I ON T.colonne_cle_primaire = I.colonne_cle_primaire
END
GO
Néanmoins, cela vous oblige à faire l'INSERT + l'UPDATE du trigger, ce qui est dommage.
Vous pouvez donc écrire à la place un trigger INSTEAD OF :
Code :
CREATE TRIGGER TR_IOF_INSERT
ON dbo.maTable
INSTEAD OF INSERT
AS
BEGIN
INSERT dbo.maTable
(
listeDesColonnesDeMaTable
)
SELECT lesColonnes
, CASE LEN(telephone)
WHEN 7 THEN '338' + telephone
WHEN 8 THEN '08' + telephone
FROM inserted
END
qui lui ne fera que l'INSERT, en corrigeant au passage le téléphone.
Cela dit, il serait probablement plus malin de faire cela dans votre application, avant de procéder à l'INSERT ...
Au pire, faites donc une procédure stockée qui prend en paramètre une valeur pour chacune des colonnes de votre table, et corrige le téléphone au besoin ;)
@++ ;)