Trigger delete sur une table réflexive
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:
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:
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