bonjour tout le monde
j'ai fait un trigger qui vérifie si un numéro de carte de crédit ou un numéro de paiement ont été déja utilisé et le cas échéant je dois supprimer un enregistrement dans une autre table.
mon code est le suivant:
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
CREATE OR REPLACE TRIGGER NO_CRT_CREDIT
BEFORE INSERT OR UPDATE ON PAIEMENTCREDIT
FOR EACH ROW
DECLARE
	Crt   NUMBER;
        Exist NUMBER;
        Aut   NUMBER;
BEGIN
        Crt   := 0;
        Exist := 0;
        Aut   := 0;
 
        SELECT count(nopaiement)
   	INTO Exist
   	FROM paiement
   	WHERE  paiement.nopaiement = :new.nopaiement ;
 
        IF (Exist = 0) THEN
            RAISE_APPLICATION_ERROR (-20005,'noPaiement invalide (inexistant dans la table Paiement)');
        end if;
 
	SELECT count(distinct noclient)
   	INTO Crt
   	FROM paiementcredit, paiement, detaillivraison, commande
   	WHERE  paiementcredit.nopaiement = paiement.nopaiement AND
        paiement.nolivraison = detaillivraison.nolivraison AND
        detaillivraison.nocommande = commande.nocommande AND
	nocarte = :new.nocarte;
 
        SELECT count(noautorisation)
   	INTO Aut
   	FROM paiementcredit
	where noautorisation = :new.noautorisation ;
 
	IF (Crt > 1) THEN
            DELETE FROM paiement WHERE nopaiement = :new.nopaiement;
	    RAISE_APPLICATION_ERROR (-20005,'Carte de credit deja utilisee par un autre client');
        elsif (Aut > 0) THEN
            DELETE FROM paiement WHERE nopaiement = :new.nopaiement;
            RAISE_APPLICATION_ERROR (-20005,'numero autorisation deja utilise pour un autre paiement');
        end if;
END;
le problème c'est qu'il affiche le message,ce qui veut dire qu'il rentre dans le if mais le delete ne se fait pas.
est ce que ca marche un delete dans un trigger??
merci pour votre aide