Originariamente inviato da markzzz
salve. vorrei avere una delucidazione su un dubbio che mi salta in mente riguardo a una condizione di race condition in fase di update all'interno del database.
supponiamo di avere questa tabella chiamata tracklist con questi record :
id block name
1 0 paolo
2 0 marco
3 0 luca
se io eseguo questa query in contemporanea su due thread distinti (due richieste nello stesso momento):
$update = mysql_query("UPDATE tracklist SET block = '1' WHERE name='marco' AND block='0'",$mydb);
il primo che arriva fà il lock sul record con id 2, e lo aggiorna. l'altra richiesta, contemporanemante, come si comporta?
1-arriva all'id 1 e la scarta (nome è paolo non marco), vede che id2 è bloccata, aspetta, la seleziona e (non rispettando più la regola del where, essendo ora block = 1) la scarta e và avanti
2-arriva all'id 1 e la scarta, (anche quì nome è paolo non marco), seleziona il record 2 e appena il thread che l'aveva bloccata la "sblocca" fà l'update del campo
3-nessuna delle 2
se qualcuno ha idea, mi farebbe un favore! grazie mille