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 35 36 37
| create or replace trigger TRG_trigger1
AFTER INSERT ON PRODUIT
FOR EACH ROW
DECLARE
/* Le but recherché est de sélectionner les produits ( s'il en existe ) dont le NUM
est supérieur à l'insertion et dont la catégorie num est identique à celle de l'insertion.
J'espère ne pas mettre trompé sur la syntaxe */
CURSOR cur_produit IS
SELECT produitNUM
FROM CONSTITUER
WHERE produitNUM > :new.produitNUM
AND categNUM =
(
SELECT categNUM
FROM CONSTITUER
WHERE :new.produitNUM = produitNUM
);
V_produit CONSTITUER.produitNUM%TYPE;
BEGIN
OPEN cur_produit;
LOOP
FETCH cur_produit INTO V_produit;
IF (cur_produit%FOUND) THEN
/* Si un produit dont l'ID est supérieur et de même catégorie que le produit insérer, alors instruction 1 : */
INSERT INTO OCCURENCE_produit@LIEN_DW
VALUES (:new.OCCVNUM, :new.OOCVDATE, :new.OCCVETAT, :new.produitNUM, 0, 0);
ELSE
/* Sinon aucun produit dont l'ID est supérieur et de même catégorie, alors instruction 2 : */
INSERT INTO OCCURENCE_produit@LIEN_DW
VALUES (:new.OCCVNUM, :new.OOCVDATE, :new.OCCVETAT, :new.produitNUM, 0, 0);
INSERT INTO OCCURENCE_categ@LIEN_DW
VALUES ('', sysdate,0 ,0 ,0);
EXIT;
END IF;
END LOOP;
CLOSE cur_produit;
END; |
Partager