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

Oracle Discussion :

Implementation de on delete cascade avec l'utilisation de REF


Sujet :

Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Par défaut Implementation de on delete cascade avec l'utilisation de REF
    bonjour,
    j'ai un souci que je n'ai pas pu résoudre, il s'agit de deux tables la table mère et table fille avec la table fille possède une colonne qui référence l'enregistrement qui se trouve dans la table mère.
    je voudrais bien implémenter un trigger qui, lorsque je supprime l'enregistrement dans la table mère, tous les enregistrements dans les autres tables soient supprimés.

    voila la définition des deux table mère et fille:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    create type mere_t as object (
    id number,
    )
    /
     
    create type fille_t as object (
    id ref mere_t
    )
    /
     
    create table mere of mere_t
    create table fille of fille_t
    voila le trigger mis sur la table mere

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CREATE OR REPLACE TRIGGER f_trigger
    BEFORE DELETE ON MERE FOR EACH ROW
    BEGIN
    DELETE FROM FILLE F WHERE :OLD.id=F.id.id;
    end;
    /
    le problème c'est que lors de la suppression, il me dit vous avez une table mutante il ne peut procéder à la suppression

  2. #2
    Expert confirmé
    Avatar de pachot
    Homme Profil pro
    Developer Advocate YugabyteDB
    Inscrit en
    Novembre 2007
    Messages
    1 822
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : Suisse

    Informations professionnelles :
    Activité : Developer Advocate YugabyteDB
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2007
    Messages : 1 822
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Est-ce qu'il y a déjà un ON DELETE CASCADE pour la foreign key ?
    Alors c'est suffisant. Pas besoin de trigger.
    Cordialement,
    Franck.

  3. #3
    Candidat au Club
    Inscrit en
    Janvier 2014
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Janvier 2014
    Messages : 2
    Par défaut
    Merci pour votre réponse,
    c'est vrai mais je veux comprendre comment contourner ce genre d'erreur dans le future grâce à l'utilisation des triggers.
    en fait c'est une erreur très répandue voila son code d'erreur ora-04091.

  4. #4
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    ORA-04091: table string.string is mutating, trigger/function may not see it
    existe pour vous empêcher de faire des bêtises. La meilleur solution est de concevoir votre code d'une autre manière.
    Pour une discussion approfondie sur le sujet consultez "The mutating table error prevents non-deterministic behavior of your code" ainsi que l'excelente série des articles "Triggers Considered Harmful, Considered Harmful "

Discussions similaires

  1. Pb avec ON DELETE CASCADE
    Par neantique dans le forum Requêtes
    Réponses: 2
    Dernier message: 05/01/2010, 10h23
  2. Oracle 9i comment utiliser DELETE CASCADE
    Par J2EVBA dans le forum Administration
    Réponses: 1
    Dernier message: 05/08/2008, 18h37
  3. Réponses: 4
    Dernier message: 02/11/2004, 15h18
  4. Problème avec l'utilisation de la commande system awk
    Par vbcasimir dans le forum Linux
    Réponses: 3
    Dernier message: 05/10/2004, 16h18
  5. Delete on cascade avec SQL server
    Par fadoua dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 14/01/2004, 11h02

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