IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

PL/SQL Oracle Discussion :

Trigger delete sur une table réflexive


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Février 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 53
    Par défaut 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 : 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

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Et si tu rajoutes juste la condition ON DELETE CASCADE à ta contrainte de référence, ça ne marche pas ?

  3. #3
    Membre averti
    Inscrit en
    Février 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 53
    Par défaut
    humm je connaissais pas ^^,

    je vais tester, et je te tiens au courant.

  4. #4
    Membre averti
    Inscrit en
    Février 2009
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Février 2009
    Messages : 53
    Par défaut
    héhé ça marche, effectivement le ON DELETE CASCADE marche très bien, merci a toi

  5. #5
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Nickel.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Requête sur une table réflexive
    Par Hellikandra dans le forum Requêtes
    Réponses: 0
    Dernier message: 21/12/2014, 17h52
  2. Evenement Insert,Update,Delete sur une table
    Par olibara dans le forum Développement
    Réponses: 7
    Dernier message: 20/11/2013, 16h28
  3. delete sur une table avec jointure
    Par Jarod51 dans le forum Requêtes
    Réponses: 2
    Dernier message: 30/09/2011, 10h26
  4. Réponses: 4
    Dernier message: 09/10/2009, 16h54
  5. probleme de delete sur une table avec somation
    Par galaad666 dans le forum Langage SQL
    Réponses: 5
    Dernier message: 23/10/2006, 16h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo