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

Bases de données Delphi Discussion :

Lock - Unlock


Sujet :

Bases de données Delphi

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut Lock - Unlock
    J'ai une requête qui me retourne 3 enregistrements dont la syntaxe se termine par
    Lorsque je parcoure ces enregistrment, j'utilise la commande Lock qui verrouille bien mes données.
    Par contre, ensuite, si je réexécute le même qry et que je fais la commande Unlock, cela ne ma libère pas mes enregistrments.
    Quelqu'un peut-il m'aider ? ( avec un petit exemple de code ).
    Merci d'avance.

    NB : Mon code est du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Toto.sql.text:='select jour from A';
    Toto.sqllock.text:='select * from B where B.jour=:jour FOR UPDATE NOWAIT';
    Open;
    While not Toto.eof do
    begin
       Toto.lock;
       Toto.next;
    end;
    Idem sur commande Unlock

  2. #2
    Rédacteur
    Avatar de Giovanny Temgoua
    Profil pro
    Étudiant
    Inscrit en
    Novembre 2003
    Messages
    3 830
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Novembre 2003
    Messages : 3 830
    Points : 4 006
    Points
    4 006
    Par défaut
    Je pense que Lock verrouille la table toute entière(et non les enregistrements)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Toto.sql.text:='select jour from A'; 
    Toto.sqllock.text:='select * from B where B.jour=:jour FOR UPDATE NOWAIT'; 
    Toto.Open; 
    Toto.lock; 
    While not Toto.eof do 
    begin 
          Toto.next; 
    end;
    Toto.Unlock;

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    182
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 182
    Points : 66
    Points
    66
    Par défaut
    En fait si on fait juste un qry sur l'ensemble d'une table et que l'on exécute la commande lock, cela lock bien l'ensemble de la table.
    Par le code ci-dessus, cela ne locke que les enregistrements résultant de la commande :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toto.sqllock.text:='select * from B where B.jour=:jour FOR UPDATE NOWAIT';
    où :Jour est conditionné par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Toto.sql.text:='select jour from A';
    L'inverse, à savoir par la commande Unlock ne semble pas fonctionner.
    Au secours...

Discussions similaires

  1. Vitesse du Lock/Unlock sur un VertexBuffer
    Par tnarol dans le forum DirectX
    Réponses: 9
    Dernier message: 05/10/2006, 11h37
  2. Unlock des enreg lockés sous une session inconnue
    Par Maglight dans le forum Oracle
    Réponses: 7
    Dernier message: 16/02/2006, 11h36
  3. Unlock des enreg lockés sous une session inconnue
    Par Maglight dans le forum Bases de données
    Réponses: 1
    Dernier message: 15/02/2006, 16h44
  4. Row lock
    Par cassandra dans le forum SQL Procédural
    Réponses: 4
    Dernier message: 09/04/2003, 16h07

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