129 messaggi dal 26 febbraio 2007
Ciao,

Ho una tabella che conteggi tutte le chiamate alle API per ogni singolo utente.

Ho un middleware che ad ogni chiamata deve incrementare il contatore di +1 sul database, solamente nel caso in cui non si sia raggiunto il limite massimo, altrimenti restituisco un eccezione.

L'operazione consiste nella lettura del numero da DB, e valutazione del numero, poi +1 ed update sul db nel caso positivo.

Ho paura che mentre leggo questo numero, arrivi un'altra richiesta e che quindi il +1 sia fatto su un dato sporco, quindi vorrei mettere questa operazione in transazione


SELECT max_request - count_request INTO cnt
      FROM users_requests_counter WHERE "userId"=1;

      IF cnt > 0 OR unlimited = -1 THEN
        UPDATE count_request = count_request +1 FROM users_requests_counter WHERE "userId"=1;
      END IF;


Però non sono sicuro di quale isolamento utilizzare per questa transazione.

Grazie mille per i suggerimenti
137 messaggi dal 10 agosto 2019
qui trovi info sull'argomento https://docs.microsoft.com/it-it/sql/database-engine/transaction-isolation-levels?view=sql-server-2014 ,ciao

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.