Trigger ???

BasicInstinct Messages postés 1470 Date d'inscription mardi 5 février 2002 Statut Membre Dernière intervention 20 octobre 2014 - 28 nov. 2006 à 11:07
cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 - 16 déc. 2006 à 13:37
bonjour tout le monde,

je cherche à remplacer des caractères parasites à l'insertion ou modification de données effectuées par un programme tierce ( dont je n'ai pas les sources).

En gros, j'ai une table 'maTable', qui possede un champ 'monChamp'.
je veux remplacer les retours chariots (13+10)  par un espace a l'insertion et modification de données.

Si j'ai tout compris, il faut que je crée un trigger, mais je suis complètement perdu.

Y'aurait il une ame charitable pour me donner un petit coup de main ?

BasicInstinct

1 réponse

cs_skweeky Messages postés 259 Date d'inscription mercredi 3 mai 2006 Statut Membre Dernière intervention 11 janvier 2010 8
16 déc. 2006 à 13:37
Bonjour,

Pour la partie remplacement personnellement je ferais un REPLACE sur les caractères CHAR(10) et CHAR(13).

Après tout dépend on peut très mettre la commande remplacement dans la requête qui fait l'insertion :

INSERT INTO MaTable(MonChamp)
SELECT REPLACE(MonChamp2, CHAR(10), '')

Idem sur un UPDATE... Sinon c'est effectivement possible dans un trigger :

CREATE TRIGGER MonTrigger ON MaTable FOR INSERT
AS

UPDATE MaTable
SET MonChamp = REPLACE(MonChamp, CHAR(10), '')
WHERE MonId IN (SELECT MonId FROM inserted)

GO

En fait la "pseudo" table inserted contient la liste des enregistrements qui ont été inserés (le trigger s'execute après l'insertion).
Je fais un UPDATE sur la table comme je l'aurais fait pour mettre à jour le champ, et j'indique dans le WHERE que la liste des enregistrement se fait grace à MonId basé sur les enregistrements insérés.

Il a d'autres possibilités aussi...

Cordialement,

Christian Robert - Winwise
http://blogs.developpeur.org/christian/
MCT - Database Development / Database Administration
0
Rejoignez-nous