Home Page
Articoli
Tips & Tricks
News
Forum
Archivio Forum
Blogs
Sondaggi
Rss
Video
Utenti
Chi Siamo
Contattaci
Username:
Password:
Login
Registrati ora!
Recupera Password
Home Page
Stanze Forum
SQL Server 2000/2005/2008, Express, Access, MySQL, Oracle
LOCK SQL SERVER 2005
giovedì 08 settembre 2011 - 13.04
Elenco Threads
Stanze Forum
Aggiungi ai Preferiti
Cerca nel forum
Elenco Tags
SQL Server 2005
WELLNET
Profilo
| Newbie
4
messaggi | Data Invio:
gio 8 set 2011 - 13:04
RISOLTO
Salve a tutti.
Devo simulare la select IDENTITY di un ID da una tabella parametri + il suo incremento in maniera protetta rispetto agli accessi concorrenti.
Ho sentito parlare dei LOCK di sql server. Quello che dovrei fare io è
LOCK
SELECT VALORE FROM TABELLA
UPDATE TABELLA SET VALORE = VALORE + 1
END LOCK
L'utente che tenta di leggere il VALORE durante l'operazione di UPDATE deve essere in qualche modo essere messo in attesa che l'update sia stato fatto.
Qualche suggerimento in merito? Che tipi di lock devo utilizzare?
Grazie
Fabrizio
RISOLTO:
Ho fatto un test con 2 query aperte (IL WAITFOR L'HO MESSO PER SIMULARE LA CONTEMPORANEITA'):
1) BEGIN TRANSACTION t1
SELECT VALORE FROM TABELLA WITH (rowlock , xlock , holdlock) WHERE CHIAVE = 'COUNT'
WaitFor Delay '00:00:10'
UPDATE TABELLA SET VALORE = VALORE + 1 WHERE CHIAVE = 'COUNT'
COMMIT TRANSACTION t1
2) SELECT VALORE FROM TABELLA WHERE CHIAVE = 'COUNT'
Lanciando prima la 1) e la 2) subito dopo vedo che la 2) aspetta che la prima concluda (restituendo VALORE) prima di restituire il nuovo VALORE + 1.
Torna su
Stanze Forum
Elenco Threads
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?
Dopo esserti registrato potrai chiedere
aiuto sul nostro
Forum
oppure aiutare gli altri
Consulta le
Stanze
disponibili.
Registrati ora !