Bonjour,
J'ai mis en place un trigger sur un fichier physique 400
Il se déclenche lors de l'update et de l'insert.
Si dessous sa définition:
CREATE TRIGGER CAP_U03
BEFORE UPDATE ON CAP
REFERENCING OLD ROW AS O
NEW ROW AS N
FOR EACH ROW MODE DB2SQL
BEGIN
DECLARE W_CD CHAR(3);
DECLARE W_NO CHAR(6);
DECLARE W_NC CHAR(6);
DECLARE W_AC CHAR(3);
DECLARE CDRET CHAR(1);
SET W_CD = O.CFCDOGA;
SET W_NO = O.CFNOCA;
SET W_NC = ' ';
SET W_AC = N.CFCDTACHMN;
SET CDRET= ' ';
CALL STRG000RP (W_CD, W_NO, W_NC, W_AC, CDRET);
IF CDRET = '1' THEN
SET N.CFCDTACHMN = 'MEL';
END IF;
IF CDRET = '2' THEN
SET N.CFCDTACHMN = ' ';
END IF;
le prog strg00rp a été créé en procédure séparément.
Le machin fonctionne. Pas de soucis.
Mais que sur l'AS400 !!
Si on utilise un requêteur SQL (standard), hors du 400 on obtiend le message suivant
Error: [SQL0723] Echec du déclencheur SQL CAP_U03 de IKGLFIC_R2. SQLCODE : -444, SQLSTATE : 42724.
SQLState: 09000
ErrorCode: -723
Que fais je ?
Je supprime le trigger ?
Je supprime les requeteurs SQL ?
Je supprime mon collègue qui l'utilise ? (encore que moralement c'est discutable...)
Partager