BasicInstinct
Messages postés1470Date d'inscriptionmardi 5 février 2002StatutMembreDernière intervention20 octobre 2014
-
28 nov. 2006 à 11:07
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 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 ?
cs_skweeky
Messages postés259Date d'inscriptionmercredi 3 mai 2006StatutMembreDernière intervention11 janvier 20108 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.