[SQL Server 2012] Update simultaneo di un campo di una tabella

di
Anonimizzato20817
il
6 risposte

[SQL Server 2012] Update simultaneo di un campo di una tabella

Buongiorno a tutti,
Vorrei esporvi la mia perplessità con un esempio pratico.

Ho una tabella "tbl_summary" con un campo "TotalPoints" che funge da contatore di valori, questa tabella viene aggiornata da più utenti simultaneamente tramite la chiamata di una funzione di un web services la quale esegue una query di Update che aggiunge dei valori.

Scenario

Utente 1:
Chiama funzione WS: UpdatePoints(int value)
Query: UPDATE tbl_summary SET TotalPoints = TotalPoints + value WHERE Id = 1

Utente 2:
Chiama funzione WS: UpdatePoints(int value)
Query: UPDATE tbl_summary SET TotalPoints = TotalPoints + value WHERE Id = 1

Utente 3:
Chiama funzione WS: UpdatePoints(int value)
Query: UPDATE tbl_summary SET TotalPoints = TotalPoints + value WHERE Id = 1

Utente n:
...ecc ecc


Le mie perplessità sono le seguenti:
1) Il motore di Sql Server 2012 gestisce in automatico con delle code le richieste di Update che arrivano simultaneamente onde evitare problemi di concorrenza, conflitti, errori?
2) Esiste un modo più pulito per fare la stessa cosa?

Grazie per l'attenzione
Antonio

6 Risposte

  • Re: [SQL Server 2012] Update simultaneo di un campo di una tabella

    1) ovviamente, no.
    2) basta usare una transazione, come dovrebbe essere sempre fatto in ogni operazione di INSERT, UPDATE e DELETE, e su cui ti consiglio di documentarti.
  • Re: [SQL Server 2012] Update simultaneo di un campo di una tabella

    gibra ha scritto:


    2) basta usare una transazione, come dovrebbe essere sempre fatto in ogni operazione di INSERT, UPDATE e DELETE, e su cui ti consiglio di documentarti.
    Ma incapsulando la query di Update in una transaction le richieste che arrivano simultaneamente vengono messe in coda ed eseguite in ordine?

    Grazie per la disponibilità
  • Re: [SQL Server 2012] Update simultaneo di un campo di una tabella

    Non esiste il concetto di "simultaneamente" ... in ogni caso non ti preoccupare, non ci saranno problemi di concorrenza o errori.
  • Re: [SQL Server 2012] Update simultaneo di un campo di una tabella

    oregon ha scritto:


    Non esiste il concetto di "simultaneamente" ... in ogni caso non ti preoccupare, non ci saranno problemi di concorrenza o errori.
    ok grazie per i consigli
  • Re: [SQL Server 2012] Update simultaneo di un campo di una tabella

    La questione è che il primo update che acquisisce il lock sulla riga in modifica, può operare, mentre gli altri attendono di ottenere il lock.
    Quando lo ottengono, vengono eseguiti.
  • Re: [SQL Server 2012] Update simultaneo di un campo di una tabella

    oregon ha scritto:


    La questione è che il primo update che acquisisce il lock sulla riga in modifica, può operare, mentre gli altri attendono di ottenere il lock.
    Quando lo ottengono, vengono eseguiti.
    Tutto questo viene gestito in automatico utilizzando le "transaction"? Quindi non c'è bisogno scrivere manualmente istruzioni di "lock" nella query?

    Grazie
Devi accedere o registrarti per scrivere nel forum
6 risposte