Bonjour, voilà je suis assez débutant en SQL.
J'ai créer une BD qui comportent donc plusieurs tables, j'ai voulu créer un trigger :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
CREATE OR REPLACE TRIGGER PoidsMax
BEFORE INSERT ON EstLivre
FOR EACH ROW
DECLARE 
b integer ;
d integer ;
e integer ;
TropLourd EXCEPTION ;
 
BEGIN
 
SELECT Colis.Poids INTO b FROM Colis WHERE Colis.CodeColis=:NEW.CECodeColis;
 
SELECT :NEW.Quantite INTO d FROM EstLivre;
 
SELECT TypeCamion.PoidsMax INTO e FROM TypeCamion,Camion WHERE :NEW.CENoImm=Camion.NoImm AND Camion.CEModele=TypeCamion.Modele 
       AND Camion.CEMarque=TypeCamion.Marque;
 
IF e<(b*d) THEN RAISE TropLourd ;
END IF ;
 
EXCEPTION
   WHEN TropLourd then RAISE_APPLICATION_ERROR(-20501,'Charge trop lourde pour le camion');
END ;
/
En gros dans chaque select je selectionne un attribut d'une relation différente pour les comparer, cependant le trigger se créer sans erreurs.
Je m'arrange pour chaque table à mettre des valeurs incensés afin de le faire déclencher seulement à chaque insertion voilà l'erreur :

ORA-01422 L'extraction ramene plus que le nombre de ligne demandé
ORA-06512 o "SYSTEM.POIDSMAX3
ORA erreur lors de l'exectuin du déclencheur ..
voilà qui signifie cette erreur svp ? Car j'ai la même sur un autre trigger

Je travail sous oracle

merciiii