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

SQL Oracle Discussion :

Table de jointure et ON DELETE CASCADE


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut Table de jointure et ON DELETE CASCADE
    Bonjour,

    J'ai une table Contrat, une table Personne et une table Signataire qui fait la jointure entre les deux premières tables.

    J'ai mis un ON DELETE CASCADE sur les deux foreign key de la table signataire mais lorsque l'on supprime une personne, le tuple correspondant est supprimé de la table Signataire mais pas le contrat associé de la table Contrat, et vice versa.

    Je voudrais savoir si il y a une astuce que je ne connais pas qui permettrait de supprimer un contrat lorsque l'on supprime une personne et vice versa ou si il faut passer obligatoirement par un trigger ?

    Merci d'avance !

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Un contrat peut avoir combien de signataires ?

  3. #3
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    un contrat peut être signé par plusieurs personnes et une personne peut signer plusieurs contrats : c'est une association n,m d'où la table de jointure

  4. #4
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    Désolé mais ma question est idiote...

    Je dois forcément passer par un trigger car une personne pouvant avoir plusieurs contrats si en supprimant un des contrat je supprime la personne, les autres contrats ne vont plus avoir de signataire.

    Je dois donc, je suppose, faire un trigger qui vérifie que si un contrat n'est plus lié à personne on le supprime et si une personne n'est plus liée à aucun contrat on la supprime.

    Juste ?

  5. #5
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    J'ai mis un ON DELETE CASCADE sur les deux foreign key de la table signataire mais lorsque l'on supprime une personne, le tuple correspondant est supprimé de la table Signataire mais pas le contrat associé de la table Contrat, et vice versa.
    Je dois forcément passé par un trigger car une personne pouvant avoir plusieurs contrats si en supprimant un des contrat je supprime la personne, les autres contrats ne vont plus avoir de signataire.

    J'ai du mal à suivre ta logique

    Je ne vois pas comment tu peux atteindre la table Personne en supprimant un enregistrement de la table Contrat qui a ON DELETE CASCADE sur la FK liant Contrat à Signataire !

    Ce que tu essayes de faire n'est pas une purge par dépendance mais un purge par absence de dépendance donc oui tu n'y arriveras pas de cette façon

  6. #6
    Membre confirmé
    Inscrit en
    Août 2008
    Messages
    145
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 145
    Par défaut
    Voilà, donc obligé de faire un trigger.

    Je me demandais simplement si il n'y avait pas un autre moyen mais en fait non.

    Merci

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

Discussions similaires

  1. Ajouter on delete cascade sur une table
    Par stalemate97 dans le forum SQL
    Réponses: 2
    Dernier message: 13/05/2010, 21h44
  2. Delete dans une table de jointure
    Par Jexou dans le forum Hibernate
    Réponses: 7
    Dernier message: 12/06/2008, 14h11
  3. alter table on delete cascade, erreur syntaxe
    Par sam01 dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 25/11/2006, 22h06
  4. DELETE multi-tables avec jointures
    Par Xunil dans le forum Requêtes
    Réponses: 13
    Dernier message: 23/10/2006, 16h44
  5. [SQL2K] delete cascade d'une table sur elle même
    Par StormimOn dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 25/04/2006, 16h28

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