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 :

defferable constraints avantages/inconvénients


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de bankette
    Homme Profil pro
    Chef de Projet Web
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Projet Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut defferable constraints avantages/inconvénients
    Bonjour ,

    Je souhaiterai connaitre les inconvénients (s'il y en a) du "defferable constraints".

    En effet cet option n'est pas défini par défaut lorsque l'on défini un clé primaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> CREATE TABLE lsc_t(x number constraint lsc_t_pk PRIMARY KEY deferrable initially deferred);
    Il y a-t-il une raison pour que cette option, somme toutes très partique, ne soit pas définie par défaut sur toutes les clés primaires? Il y a-t-il des inconvénients a son utilisation?

    Merci d'avance,

  2. #2
    Rédacteur

    Homme Profil pro
    Consultant / formateur Oracle et SQL Server
    Inscrit en
    Décembre 2002
    Messages
    3 461
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant / formateur Oracle et SQL Server

    Informations forums :
    Inscription : Décembre 2002
    Messages : 3 461
    Par défaut
    Citation Envoyé par bankette Voir le message
    Bonjour ,

    Je souhaiterai connaitre les inconvénients (s'il y en a) du "defferable constraints".

    En effet cet option n'est pas défini par défaut lorsque l'on défini un clé primaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL> CREATE TABLE lsc_t(x number constraint lsc_t_pk PRIMARY KEY deferrable initially deferred);
    Il y a-t-il une raison pour que cette option, somme toutes très partique, ne soit pas définie par défaut sur toutes les clés primaires? Il y a-t-il des inconvénients a son utilisation?

    Merci d'avance,

    Bonjour

    Comme vous le savez, par défaut une contrainte est vérifiée à la fin de l'opération modificative (UPDATE par exemple). Si vous reportez cette vérification à la fin de la transaction complète, cela veut dire que vous autorisez la violation de cette contrainte, et donc les incohérences qui en découlent, durant toute la durée de la transaction.
    Certes, grâce à l'isolation, lesdites incohérences ne seront pas visibles des autres sessions, mais les autoriser c'est armer le pistolet pour se tirer une balle dans le pied...

  3. #3
    Membre confirmé Avatar de bankette
    Homme Profil pro
    Chef de Projet Web
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Projet Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut
    Merci de ta réponse, je suis parfaitement conscient du fonctionnement et je ne pense l'utiliser que pour des transaction simple (un simple delete) mais sur des table possedant énormement de clé étrangère (un delete de 250 lignes prend environ 15 minutes !).

    Ce que je souhaiterai savoir c'est il y a t il des effets de bord a ce paramétrage, est ce que cela peut avoir des influence sur les performances général de la BDD, il y a t il des opération qui ne sont plus permises? En gros il y a t il un coté obscure au defferable constraint ?

  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
    Citation Envoyé par bankette Voir le message
    ...un delete de 250 lignes prend environ 15 minutes ...
    Si c'est vrai probablement qu'il faut vérifier l'opportunité d'avoir des indexes sur les clés étrangères. Faite une trace SQL étendue pour savoir plus.
    De toute façon defferable ou pas la contrainte sera vérifié.

  5. #5
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    à mon avis, si tu as DEFERRABLE INITIALLY IMMEDIATE, alors le fonctionnement est le même que NOT DEFERRABLE

    La différence est que avec NOT DEFERRABLE, l'utilisateur qui n'a pas ALTER ANY TABLE ne peut pas modifier se fonctionnement. Donc en quelque sorte l'inconvénient de mettre toujours DEFERRABLE INITIALLY IMMEDIATE se limite à une question applicative. Il se pourrait par exemple qu'un TRIGGER soit lancé alors que la ligne sera rejettée lors du COMMIT

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Par défaut
    bon, par contre d'avoir DEFERRABLE INITIALLY DEFERRED, ça change fondamentalement le fonctionnement de l'application

  7. #7
    Membre confirmé Avatar de bankette
    Homme Profil pro
    Chef de Projet Web
    Inscrit en
    Mars 2007
    Messages
    135
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chef de Projet Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mars 2007
    Messages : 135
    Par défaut
    Citation Envoyé par laurentschneider Voir le message
    Il se pourrait par exemple qu'un TRIGGER soit lancé alors que la ligne sera rejettée lors du COMMIT
    Ceci peut etre très génant ! Est ce que cela veut dire que un trigger pourra etre déclencher par un delete dans une table1, modifier d'autre table ou autre chose, mais seules les modifications de la table1 seront rollbacké, c'est a dire que toutes les modifications faites pas le trigger seront validés?

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

Discussions similaires

  1. Avantages / inconvénients de BSD face à linux
    Par Community Management dans le forum Distributions
    Réponses: 129
    Dernier message: 17/01/2011, 18h51
  2. FireBird Avantages / Inconvénients ?
    Par WuKoDLaK dans le forum Débuter
    Réponses: 14
    Dernier message: 15/05/2006, 16h48
  3. Réponses: 5
    Dernier message: 27/07/2004, 15h57
  4. Oracle -> Postgres (avantages/ inconvénients)
    Par milka dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 12/03/2004, 11h58

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