Exemples de triggers SQL en V5

BoTTom |
-- EXEMPLES DE TRIGGER
--
--   SI PRXACTUEL < PRIX (D'ACHAT) LORS D'UNE MISE A JOUR
--    IL PREND LA VALEUR DE PRIX.
--
CREATE TRIGGER  MAJ_PRIX BEFORE UPDATE OF CAV_PRXACTUEL
                             ON BDVIN/CAVE
REFERENCING NEW ROW AS NOUVEAU
FOR EACH ROW MODE DB2ROW
 
BEGIN
 
IF NOUVEAU.CAV_PRXACTUEL < NOUVEAU.CAV_PRIX THEN
    SET NOUVEAU.CAV_PRXACTUEL = NOUVEAU.CAV_PRIX ;
END IF;
 
END ;
 
--
--   EXEMPLE D'UTILISATION DE DB2ROW
--    ON TRACE DANS UN FICHIER CUMUL, VALEUR AVANT, APRÈS
--
 
CREATE TRIGGER  VIN_TRACE AFTER UPDATE OF CAV_PRIX
                             ON BDVIN/CAVE
REFERENCING OLD ROW AS OCAVE
            NEW ROW AS NCAVE
FOR EACH ROW MODE DB2ROW
 
BEGIN
DECLARE AV DEC(11, 2);
DECLARE AP DEC(11, 2);
 
SET AV = OCAVE.CAV_PRIX  ;
SET AP = NCAVE.CAV_PRIX  ;
 
INSERT INTO AF4TEST/CUMUL VALUES(NOW() , AV, AP) ;
 
END           ;
 
--
--   EXEMPLE D'UTILISATION DE OLD TABLE/NEW TABLE
--    ON TRACE DANS UN FICHIER CUMUL, SOMME AVANT/APRÈS
--


|
 
CREATE TRIGGER  VIN_CUMUL  AFTER UPDATE OF CAV_PRXACTUEL
                             ON BDVIN/CAVE
 
REFERENCING OLD TABLE AS OCAVE
            NEW TABLE AS NCAVE
FOR EACH STATEMENT MODE DB2SQL
 
BEGIN
DECLARE AV_CUMUL DEC(11, 2);
DECLARE AP_CUMUL DEC(11, 2);
 
SELECT SUM(CAV_PRXACTUEL) INTO AV_CUMUL FROM OCAVE  ;
SELECT SUM(CAV_PRXACTUEL) INTO AP_CUMUL FROM NCAVE  ;
 
INSERT INTO AF4TEST/CUMUL VALUES(NOW() , AV_CUMUL, AP_CUMUL) ;
 
END           ;




©AF400