Bonjour a tous,

alors voila j'aimerais faire une chose toutes simple, faire un trigger de suppression en cascade sur une table réflexive.

J'ai testé certaine chose mais je rencontre des erreurs , je ne sais pas comment faire ...

voici ma table


Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
 
CREATE TABLE DOMAINE
   (
    ID NUMBER  NOT NULL,
    ID_SURDOMAINE NUMBER  NULL,
    NOM VARCHAR2(32)  NULL,
    NIVEAU number(1)  NULL
,   CONSTRAINT PK_DOMAINE PRIMARY KEY (ID)  
   ) ;
 
ALTER TABLE DOMAINE ADD (
     CONSTRAINT FK_DOMAINE_DOMAINE
          FOREIGN KEY (ID_SURDOMAINE)
               REFERENCES DOMAINE (ID))   ;



Et pour le trigger (qui ne marche pas) le voici

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
 
CREATE or replace TRIGGER t_d_domaine_cascade
before DELETE on domaine for each row 
declare
v_numdom domaine.id%type; 
 
CURSOR moncurs IS
Select d2.id
from domaine d1, domaine d2 
where(d1.id = d2.id_surdomaine) 
and d1.id_surdomaine = v_numdom
UNION
select id
from domaine 
where id_surdomaine = v_numdom;
begin	
	v_numdom := :old.id;
    FOR cur_ligne IN moncurs LOOP
       delete from domaine where id = cur_ligne.id; 
    END LOOP ;
end ;
Il ne marche pas car je veux faire une action sur la table dont j'appel le trigger

Merci