cs_mbik
Messages postés31Date d'inscriptionmardi 1 avril 2008StatutMembreDernière intervention10 mars 2011
-
5 mars 2011 à 14:27
elsuket
Messages postés6Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention22 mars 2011
-
22 mars 2011 à 02:58
Bonjour,
Je viens vers vous pour trouver une solution à un problème qui pour certains n'en sera certainement pas un.
J'explique, j'ai une une table avec un champ TELEPHONE. Ce champ se rempli en fonction des appels entrants reçus. Malheureusement les n° ne sont pas remplis au complet. C'est à dire que si j'ai reçu un appel du n° 0148444444, l'enregistrement au niveau de la base prend en compte les 08 derniers chiffres ou les 07 derniers chiffres!!!
A ce que j'ai entendu, les triggers peuvent corriger cela avec le déclenchement d'un update pour chaque enregistrement. SVP comment puis je effectuer le paramétrage de sorte que les 02 premiers ou 03 premiers chiffres manquants soient complétés sachant que ce sera à chaque fois les même chiffres à rajouter lors de la mise à jour???
elsuket
Messages postés6Date d'inscriptionjeudi 25 novembre 2004StatutMembreDernière intervention22 mars 2011 22 mars 2011 à 02:58
Bonjour,
Vous pouvez écrire le trigger AFTER UPDATE comme suit :
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 :
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 ;)