Pbm avec un trgger crée

Résolu/Fermé
tfcv123 Messages postés 74 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 4 décembre 2008 - 31 janv. 2008 à 11:44
tfcv123 Messages postés 74 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 4 décembre 2008 - 8 mars 2008 à 11:29
Bonjour,
voici mon trigger que je crée qui me permet lors de l'ajout d'une nvelle ligne dans la table ligne_coms vérifie que la quantité commandé
n'est pas supérieur à la quantité en stock et affiche un message'stock insuffsant'
create or replace trigger verifier_qte_com
before insert on ligne_coms
for each row
declare
qte integer;
stock integer;
erreur EXCEPTION;
begin
select qtestock into qte
from produits
where num_pro =:new.num_pro;

select qté_com into stock
from ligne_coms
where num_com =:new.num_com;
if stock >= qte then
RAISE erreur;
else
update produits
set qtestock =qtestock-stock;
end if;
EXCEPTION
WHEN erreur THEN
RAISE_application_error(-20002,'le stock est insuffisant');


end;

il cree le trigger mais lorsque je veux inserer dans ma table linge_coms il m'affiche ce message:
ERREUR à la ligne 1 :
ORA-04098: Déclencheur 'COURS1.VERIFIER_COMMANDE' non valide. Echec de la revalidation

insert into ligne_coms( Num_com,Num_pro, Qté_com) values('103','100','20');

l'erreur peut se trouver où aidez moi
A voir également:

2 réponses

phil_232 Messages postés 286 Date d'inscription jeudi 6 décembre 2007 Statut Membre Dernière intervention 12 juin 2008 33
31 janv. 2008 à 22:58
l'erreur se trouve surtout dans le design. les trigger sont une chose bien particulière. une trigger est exécute à chaque fois que tu insers (dans ton cas) des données. en principe ce n'est pas une bonne idée d'en utiliser. je comprends que dans ton cas cela se propose tout seul. il faut veiller à ne pas accepter des commandes des choses qui ne sont pas en stock.
pourtant cela n'arrive pas souvent (j'espère au moins pour ta société) mais la plupart du temps le choses sont en stock (encore, je l'espère).
il serait peut-être mieux d'exécuter une stored proc qui vérifie si le produit est disponible.
en règle général les triggers sont à éviter. seulement si on a plus une autre option. bon, cette règle est pour la performance. si cela ne joue pas de rôle...
0
tfcv123 Messages postés 74 Date d'inscription jeudi 28 décembre 2006 Statut Membre Dernière intervention 4 décembre 2008
8 mars 2008 à 11:29
merci
0