Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    php mysql select .... for update

    allora sto provando ad utilizzare il comando :

    select ....... for update, in pratica con una tabella di tipo innodb dovrebbe bloccare la riga richiesta e non permettere ad altri di leggerla finchè non è stata rilasciata....


    ora mi sorgono dei dubbi:
    1) mettiamo che io effettuo la select e blocco la riga in lettura, questa riga fin quando rimarrà bloccata??


    2) sto provando il tutto in locale, allora apro la prima pagina, effettuo la select con update e stampo il risultato, contemporaneamente apro un'altra pagina in locale e provo a rifare la procedura, ma anche la seconda pagina riesce a leggere la riga.... ma non funziona oppure in locale non si può provare??

    grazie

  2. #2
    up!!
    nessuno mi può aiutare??

  3. #3
    http://dev.mysql.com/doc/refman/5.0/...ing-reads.html

    1)....
    Locks set by IN SHARE MODE and FOR UPDATE reads are released when the transaction is committed or rolled back.
    2) dipende da come fai la prova....

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  4. #4
    ok, quindi dovrei sempre inziare con mysql_query('begin') o no?


    inoltre mettiamo caso che l'utente accede alla pagina e mi blocca il record e poi rimanga per tantissimo tempo nella pagina o addirittura chiuda la pagina... cosa succede??


    grazie dell'aiuto

  5. #5
    allora ho provato a mettere online i file a questo indirizzo

    http://nikinaki.altervista.org/lettura_esclusiva.php


    in pratica riesco sempre a leggere il risultato della query aprendo due pagine diverse del mio browser.... l'unica cosa che ho notato è che nella stampa a video del resultset raramente mi dà Resource id #3, mentre molto spesso mi dà Resource id #2, ma gli indici dopo # cosa rappresentano??


    posto il codice della pagina:
    <?php
    session_start();

    include('funzioni.php');
    connectdb();

    mysql_query('begin');
    $query_tmp='select * from lock_spaces where x_spazio=1 and y_spazio=5 for update';


    $res11=mysql_query($query_tmp);
    echo $res11;

    while ($record = mysql_fetch_row($res11)) { echo "
    Il risultato è:".$record[0]; }
    ?>

    Vai



    mentre lettura_esclusiva2.php effettua soltanto il commit..
    <?php
    session_start();


    include('funzioni.php');
    connectdb();

    mysql_query('commit');
    ?>

    puoi, cortesemente provare tu??

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.