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

Administration Oracle Discussion :

[Oracle 10.2 G] Ligne blockée illogiquement a cause d'une foreign Key


Sujet :

Administration Oracle

  1. #1
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut [Oracle 10.2 G] Ligne blockée illogiquement a cause d'une foreign Key
    Plutot que de faire un petit discours, je commence par le script

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    drop table t;
    creat table t ( id number primary key, y number,z number ); 
    ALTER TABLE t ADD ( CONSTRAINT FK1 
    FOREIGN KEY (z) REFERENCES t (id)); 
    insert into t values ( 1, 1 ,null); 
    insert into t values ( 2, 2 ,null); 
    commit;
    PS: j'ai eu quelques difficultés à poster ce post, en effet lorsque j'ecrivais "CREATE TABLE" mon post ne voulais pas se laisser creer, d'ou la petite faute de frappe au dessus.

    Ensuite faire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select null from t where id = 1 for update nowait;
    Puis ouvrir une nouvelle session et faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    select null from t where id = 2 for update nowait;
     
    declare 
    r t%rowtype; 
    begin 
    select * into r from t where id = 1; 
    update t set row = R where id = 1; 
    end;
    Vous remarquerez que dans ce cas la session 2 bloque la session 1 comme si la session 2 avais fait un select for update sur l'Id 1

    Si on désactive la Foreign Key tout se passe bien .

    J'estime que c'est un bug d'oracle. Qu'en pensez-vous ?
    SI je me souviens bien de mes premiers tests, si on liste toutes les colonnes pour l'update tout se passe bien. Maintenant lorsqu'on a des talbes avec plus de 150 colonnes, il est très confortable de pouvoir utiliser la Syntaxe Row = ...

    Est-ce que d'autres ont rencontré le même probleme ? Comment l'avez vous résolu ?

    D'avancee merci de votre aide

  2. #2
    Membre du Club Avatar de schnourf
    Inscrit en
    Mars 2003
    Messages
    66
    Détails du profil
    Informations forums :
    Inscription : Mars 2003
    Messages : 66
    Points : 43
    Points
    43
    Par défaut
    Bon, apparement personne ne connaît la reponse.

    Mais j'ai quand même une bonne nouvelle, mon collegue, après de longue recherches, a decouvert qu'il fallait créer un index sur la foreign key et alors cela fonctionne.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/11/2007, 09h26
  2. [oracle 9] Numéro de ligne d'une query
    Par AntaresJon dans le forum Oracle
    Réponses: 8
    Dernier message: 08/03/2007, 14h48
  3. [ORACLE 9i] INSERT INTO en block
    Par Ito dans le forum Oracle
    Réponses: 2
    Dernier message: 23/11/2006, 15h16
  4. [ORACLE 9i] Avoir 12 lignes pour 12 mois de chaque années
    Par Worldofdada dans le forum Oracle
    Réponses: 4
    Dernier message: 17/11/2005, 12h57
  5. [ORACLE 10g] Droits en ligne sur une table
    Par Cerberes dans le forum Oracle
    Réponses: 4
    Dernier message: 04/02/2005, 11h39

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