Siamo di recente di fronte a un problema con inserimenti simultanei in una delle nostre tabelle sal server da più client. Spero che voi ragazzi possiamo aiutarci.SQL Server - Inserimenti simultanei alla tabella da più client - Verifica limite e blocco
Stiamo utilizzando la stored procedure per eseguire le transazioni. In quella stored procedure, per ogni transazione, calcoliamo le vendite totali finora. Se le vendite totali sono inferiori al limite impostato, , la transazione sarà consentita. In caso contrario, la transazione verrà negata.
funziona bene la maggior parte delle volte. Tuttavia, a volte quando più client tentano di eseguire la transazione esattamente nello stesso momento, il controllo dei limiti non riesce poiché entrambe le transazioni vengono eseguite.
Potete suggerire ragazzi come possiamo applicare efficacemente il limite tutto il tempo? C'è un modo migliore per farlo?
Grazie!
Fornire la struttura della tabella e i dati di esempio. Il limite impostato è costante per tutte le transazioni? –
Per intuizione, il problema potrebbe essere risolto se la procedura memorizzata viene eseguita molto più velocemente. Con una stored procedure di 100ms le collisioni saranno estremamente rare. Se pubblichi la query e la definizione della tabella, potremmo suggerire un indice che rende il calcolo totale molto veloce. – Andomar
si prega di trovare la struttura della tabella. In questa somma (puntata) per ogni numero di puntata non deve essere superiore a 1000. Questo limite 1000 è memorizzato in un'altra tabella. \t [SlipID] [bigint] IDENTITY (1,1) NOT NULL, \t [TillID] [int] NOT NULL, \t [codice a barre] [varchar] (30) NOT NULL, \t [GamingDate] [data] NON NULL, \t [DrawID] [int] NOT NULL, \t [BetNumber] [tinyint] NOT NULL, \t [currencyID] [int] NOT NULL, \t [Puntata] [decimale] (9, 2) NOT NULL , \t \t [SlipTime] [datetime] NOT NULL, – sammy