Re: [Postgresql-it] Concorrenza
- From: Stefano Reksten <sreksten@xxxxxx>
- To: postgresql-it@xxxxxxxxxxxxxxxxx
- Date: Thu, 07 Apr 2005 18:04:24 +0200
At 16.51 07/04/2005, you wrote:
Anche se probabilmente è stato già posto il quesito vorrei riproporlo, ho
visto la manualistica sul concurrecy control ma non ho trovato un esempio
a riguardo.
La domanda è questa io vorrei eseguire una istruzione tipo l'udate qui
sotto e vorrei essere sicuro che un solo utente alla volta esegua l'update
sul record identificato dalla chiave campoj con valore yyyy
update table
set campoi = xxxx
where campoj =yyyy
Probabilmente ho capito male io, oppure hai posto male la domanda. Però se
fai questa update, così com'è scritta, comunque vada un solo utente per
volta eseguirà l'aggiornamento. Ma forse volevi fare qualcosa del tipo
BEGIN;
SELECT * FROM table WHERE campoj = yyyy FOR UPDATE;
UPDATE...
COMMIT;
se non ricordo male in questo modo fai un lock alla riga; poi puoi fare
qualsiasi altra cosa; finché non dai la commit il lock di riga non va via e
quindi a meno che le altre transazioni non siano in dirty_read verranno
bloccate finché la prima non ha finito.
Ah, perché non mi ricordo mai i vari liveli di isolamento? :) La mia
testaccia... comunque li trovi sul manuale.
Ciao,
Stefano
Other related posts: