[SQL] Trigger before delete

Résolu/Fermé
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 - 30 oct. 2009 à 18:25
 fz - 9 sept. 2010 à 19:37
Bonjour,

J'ai une table PRODINFO contenant des informations sur les differents produits (dont le prix : list_price) et une table PRICEHISTORY qui enregistre tous les changements de prix de tous les produits (rec_id, product_id, rec_date, price) ; rec etant pour record ( ou enregistrement en francais).

Ce que je veux maintenant c'est faire en sorte que quand un produit est supprime de la table PRODINFO, toutes les lignes de la table PRICEHISTORY le concernant soient aussi supprimees.

J'ai donc ecrit ce trigger :
create or replace
trigger modProduct
before insert or update or delete of list_price on prodinfo
for each row
begin
if deleting then
delete * from priceHistory
where priceHistory.product_id = :old.product_id
else
INSERT INTO pricehistory(rec_id, product_id, rec_date, price)  VALUES(recIDSeq.nextval, :new.product_id, SYSDATE, :new.list_price);
end if;
end;


Mais lorsque j'essaye de faire des operations avec les produits, SQL Developer m'informe que mon trigger n'est pas valide...

Quelqu'un saurait me dire ou est mon erreur ?


Merci d'avance ! ;)

A voir également:

2 réponses

if deleting then
delete * from priceHistory
where priceHistory.product_id = :old.product_id

a remplacer par

if deleting then
delete from priceHistory
where priceHistory.product_id = :old.product_id

:)
1
zzzer Messages postés 907 Date d'inscription dimanche 25 mai 2008 Statut Membre Dernière intervention 3 décembre 2023 181
30 oct. 2009 à 19:41
Resolu :

delete from pricehistory
where product_id = :old.product_id;
0