J'ai créé des triggers d'update sur IB 6 (version open source).
Sur plusieurs dizaines de tables, ce type trigger marche, mais pas sur mes trois plus grandes tables.
J'aimerais savoir si les triggers sont limités en taille, ou alors les concaténations de chaînes de type varchar.
En effet, à l'exécution du trigger, lorsque je fais un update sur ma table, j'ai un string truncation.

Voici le code de mon trigger.

Note : TRIM2 et QUOTEDSTR sont deux UDFs fournies par défaut par interbase.

Voilà, si quelqu'un peut m'aider, merci, sinon, tant pis !

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
CREATE TRIGGER UTILISATEUR_UPDATE FOR UTILISATEUR
ACTIVE BEFORE UPDATE POSITION 0
AS
BEGIN
INSERT INTO REPLICATION VALUES(
GEN_ID(MON_GEN,1),
'UPDATE UTILISATEUR SET UTILISATEUR_NUM=
'||TRIM2(NEW.UTILISATEUR_NUM)||',FONCTION_NUM=
'||TRIM2(NEW.FONCTION_NUM)||',UTILISATEUR_NOM=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_NOM))||',UTILISATEUR_PRENOM=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_PRENOM))||',UTILISATEUR_ADR_VILLE=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_ADR_VILLE))||',UTILISATEUR_ADR1=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_ADR1))||',UTILISATEUR_ADR2=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_ADR2))||',UTILISATEUR_CODE_POSTAL=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_CODE_POSTAL))||',UTILISATEUR_PAYS=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_PAYS))||',UTILISATEUR_MAIL_PRO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_MAIL_PRO))||',UTILISATEUR_TEL_PRO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_TEL_PRO))||',UTILISATEUR_MOBILE_PRO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_MOBILE_PRO))||',UTILISATEUR_FAX_PRO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_FAX_PRO))||',UTILISATEUR_MAIL_PERSO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_MAIL_PERSO))||',UTILISATEUR_TEL_PERSO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_TEL_PERSO))||',UTILISATEUR_MOBILE_PERSO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_MOBILE_PERSO))||',UTILISATEUR_FAX_PERSO=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_FAX_PERSO))||',UTILISATEUR_DATE_CREATION=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_DATE_CREATION))||',UTILISATEUR_DATE_MODIF=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_DATE_MODIF))||',UTILISATEUR_NOTES=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_NOTES))||',TITRE_NUM=
'||TRIM2(NEW.TITRE_NUM)||',UTILISATEUR_SEXE=
'||TRIM2(NEW.UTILISATEUR_SEXE)||',UTILISATEUR_LOGIN=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_LOGIN))||',UTILISATEUR_PASSWORD=
'||QUOTEDSTR(TRIM2(NEW.UTILISATEUR_PASSWORD))||',PROFIL_NUM=
'||TRIM2(NEW.PROFIL_NUM)||
'WHERE UTILISATEUR_NUM='||Old.UTILISATEUR_NUM);
end
Edité par Barbibulle : merci de mettre le code entre les balises code, celà le rend plus lisible et donc sera plus attrayant. sinon tant pis...