Puisque vous utilisez la valeur de séquence dans l'instruction d'insertion,
INSERT INTO dd_paytrack
(idtrack, pt_user, pt_date,
pt_action, pt_payid
)
VALUES (idtrack_seq.NEXTVAL, USER, TO_CHAR (SYSDATE, 'DD-MON-YY'),
log_action, id_pay
);
il n'est pas nécessaire de le sélectionner comme ci-dessous.
SELECT idtrack_seq.NEXTVAL
INTO :NEW.idtrack
FROM DUAL;
De plus, vous avez manqué un deux-points dans cette ligne,
id_pay := :OLD.idpay;
EDIT :Encore une chose, il est inutile d'avoir l'instruction DBMS_OUTPUT dans le déclencheur. Puisque vous ne le verrez pas, même si l'exécution l'atteint.