Bonjour,

Débutant en SQL, je viens à vous car je rencontre un problème sur ma base, sous oracle. Je souhaite créer un trigger qui actualise le stock de mes produits lorsque ceux-ci sont insérés dans une commande

Je m'explique voici deux de mes tables:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
create table Produits (
    Numproduit number not null constraint produits_pk primary key,
    Nomproduit varchar2(30) not null,
    Categorie varchar2(15) not null,
    Prix_unit number not null,
    Quantite number
);
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
create table Detailcommandes (
    Numcommande number not null,
    Numproduit number not null,
    Quantite number,
    primary key(Numcommande,Numproduit),
    foreign key(Numcommande) references Commandes(Numcommande),
    foreign key(Numproduit) references Produits(Numproduit)
);
Le trigger que j'utilise est le suivant:

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
CREATE OR REPLACE TRIGGER gestion_quantite after INSERT ON Detailcommandes
FOR EACH ROW
UPDATE produits
SET Quantite =Quantite - :new.Quantite 
WHERE numproduit = :new.Numproduit
Lorsque je tente par exemple
Code : Sélectionner tout - Visualiser dans une fenêtre à part
insert into Detailcommandes values(10,20001,1);
j'ai cette erreur:

ORA-00001: unique constraint (SQL_FQHBDQYTRHTVCQOFBCMNKZKHK.SYS_C009793450) violated ORA-06512: at "SYS.DBMS_SQL", line 1721

J'ai tenté beaucoup de choses issues de nombreux forums je ne vois pas où ça coince

Merci beaucoup !