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 :

[9i pl/sql] Tester une contrainte de clé étrangère avant son activation [Hors sujet]


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut [9i pl/sql] Tester une contrainte de clé étrangère avant son activation
    Bonjour,

    J'ai une procédure pl/sql qui s'articule comme suit :

    1/ Désactive les FK d'un jeu de tables
    2/ Execution d'opérations DML
    3/ Réactivation des FK du jeu de table

    Mon besoin :
    Lorsque la réactivation déconne (point 3), je souhaite rollback le DML

    Mon problème
    A. Le DDL commit illico donc impossible
    B. La mise en place d'une PRAGMA AUTONOMOUS_TRANSACTION dans la procédure de réactivation des contraintes implique un deadlock car la table dont la contrainte doit être réactivée est verrouillée sous la main transaction

    Ma question
    Comment feriez-vous pour tester si la contrainte peut être réactivée ?
    Si vous avez d'autres suggestions, n'hésitez pas.

    Bonne journée,
    Seb

  2. #2
    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
    Je peux imaginer deux axes d’actions
    1. ne pas désactiver les contraintes
    2. enregistrer les modifications DML pour faire un « rollback » fonctionnel
      (suppression par delete des enregistrements ajoutés)


    Ensuite plusieurs solutions sont envisageable au moins pour le cas b) vues matérialisés, trigger d’audit, colonne timestamp, etc.
    Pour a) il faut étudier la faisabilité en fonction de besoins.

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    Tu peux pas faire un VALIDATE sur la contrainte dans une autre session ?

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Je ne sais pas comment seulement valider une contrainte, c'est à dire sans exécuter d'opération DLL commitante ...

  5. #5
    Membre Expert
    Avatar de LeoAnderson
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    2 938
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 2 938
    Par défaut
    Mis à part faire manuellement les select de vérifications des FK...
    (par contre, pour les perfs, c'est la mort !)

    Mais une table d'exceptions (http://download.oracle.com/docs/cd/B...eral.htm#13282) ne pourrait-elle pas convenir ?

  6. #6
    Membre Expert
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Octobre 2006
    Messages
    1 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : Argentine

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Finance

    Informations forums :
    Inscription : Octobre 2006
    Messages : 1 173
    Par défaut
    Super cet article ! Je m'y attache dès demain matin et vous tiens au courant.

    Merci pour le coup de main,
    Seb

Discussions similaires

  1. [11gR2] Sur quelle table porte une contrainte de clé étrangère ?
    Par CinePhil dans le forum SQL
    Réponses: 2
    Dernier message: 27/02/2015, 11h09
  2. Ajouter une contrainte de clé étrangère
    Par cedrix57 dans le forum Langage SQL
    Réponses: 3
    Dernier message: 29/12/2009, 03h35
  3. Réponses: 29
    Dernier message: 25/11/2007, 16h08
  4. Réponses: 5
    Dernier message: 28/04/2006, 11h55
  5. [SQL] desactiver une contrainte de clé primaire puis l'a reactive
    Par SanTa62 dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 12/01/2006, 08h50

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