Mira te paso esto que es lo que use yo obviamente tendras que cambiar las tablas y las sentencias dentro del begin, por falta de tiempo no te lo puedo dar que significa cada caso, pero si necesitas que te explique algo sobre que hace consultamelo, pero investigalo, creo que te resolveria tus ncesidades.
CREATE TRIGGER "ADMINISTRATOR"."MKTINSGASTOHIS"
AFTER INSERT ON MKTGASTOFAC REFERENCING NEW AS NSTATUS FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE vCDGAST SMALLINT DEFAULT 0;
DECLARE vIDOP CHARACTER(15) DEFAULT 'A';
SET (vCDGAST,vIDOP) = (SELECT CDGASTO, IDOPR
FROM MKTGASTOSCAB
WHERE IDGASTO=NSTATUS.IDGASTO);
IF(NSTATUS.IDSTATUSFAC = 'P')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '1',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP),'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'E')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '2',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'R')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '3',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'Y')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '4',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
IF(NSTATUS.IDSTATUSFAC = 'C')
THEN
INSERT INTO MKTGASTOHIS (IDGASTO, CDGASTO, IDSTATUSORI, IDSTATUS,
IDOPR, FECUPDT, HORAUPDT, PROCESSMAIL)
VALUES (NSTATUS.IDGASTO, vCDGAST, NSTATUS.IDSTATUSFAC, '5',
vIDOP, NSTATUS.FECFAC, TIME(CURRENT TIMESTAMP), 'I');
END IF;
END