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
Il ne marche pas car je veux faire une action sur la table dont j'appel le 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 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 ;
Merci
Partager