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 :

[9i][Check constraint] Problème d'update


Sujet :

Oracle

  1. #1
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut [9i][Check constraint] Problème d'update
    Salut,

    Pour expérimenter la "check constraint" j'ai créé une table qui 'étend' une autre (lien 1-1).
    table parent avec un id
    table child avec un id et une fk sur l'id de parent (parent_id)

    J'ai une check constraint sur la table child qui check : id = parent_id

    J'ai 2 enregistrements dans la table enfant.

    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
     
    select id from child
    5189
    5190
     
    select id from child where id = 5190
    5190
     
    select id from child where parent_id = 5190
    5190
     
    update child set user_modif = 'test' where id = 5190
    -- => 0 row(s) updated !!!!!!!!!!????????
     
    update child set user_modif = 'test' where parent_id = 5190
    -- => 1 row(s) updated
     
    update child set user_modif = 'test'
    -- => ... je n'ai pas attendu que ça se finisse, ça prenait trop de temps... 
    -- pour seulement 2 lignes !!! et aucun triggers ou cascades ou autre chose qui pourrait expliquer cette lenteur ...
    Sans la check constraint, ça marche normalement.
    Ce qui est bizarre c'est que j'ai exactement le même système sur 2 autres tables et que ça marche sans problème (sur le même schéma et tout et tout).
    L'autre point bizarre est que ça marchait sans problème hier.

    J'aimerais juste votre opinion sur ce problème.
    Je vais de toute façon virer la colonne id de la table child et mettre la pk sur parent_id.

    Merci,
    Natha
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

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

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Points : 19 073
    Points
    19 073
    Par défaut
    manque un commit entre les updates donc des locks

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    On peut vérifier assez facilement si une transaction attend sur des verrous détenus par une autre transaction en utilisant les vues DBA_BLOCKERS et DBA_WAITERS.

  4. #4
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Citation Envoyé par Fred_D
    manque un commit entre les updates donc des locks
    J'étais en auto-commit
    Il n'y avait aucun vérou.
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

  5. #5
    Membre éprouvé
    Inscrit en
    Avril 2006
    Messages
    1 024
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 1 024
    Points : 1 294
    Points
    1 294
    Par défaut
    J'ai déja eu ce genre de bug en oracle 8.1.7.0 sur des table organisées en index, les clause where des update n'étaient pas toutes prises...

    Je pense qu'il va faloir faire une recherche sur ce bon vieux métalink...

  6. #6
    Membre expert
    Avatar de natha
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    2 346
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Janvier 2006
    Messages : 2 346
    Points : 3 083
    Points
    3 083
    Par défaut
    Ok, merci.
    Je vais laisser tomber ça pour le moment
    Comment ça ? La réponse à ton problème n'est ni dans la faq, ni dans les tutos, ni dans sources ??? Etonnant...
    De la bonne manière de poser une question (et de répondre).
    Je ne fais pas de service par MP. Merci (...de lire les règles...).
    Ma page dvp.com

Discussions similaires

  1. [MySQL] problème requête UPDATE
    Par oceane751 dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 23/10/2005, 18h28
  2. problème de Update
    Par cyrill.gremaud dans le forum ASP
    Réponses: 7
    Dernier message: 29/08/2005, 20h58
  3. [C#] [Oracle] Problème d'Update
    Par _Air_ dans le forum Windows Forms
    Réponses: 12
    Dernier message: 06/04/2005, 13h56
  4. Problème requete update
    Par krfa1 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 29/03/2005, 08h47
  5. problème pour updater une BD
    Par yoda_style dans le forum ASP
    Réponses: 6
    Dernier message: 17/03/2005, 10h56

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