Мы недавно столкнулись с одной проблемой с одновременными вставками в одну из наших таблиц сервера sal из нескольких клиентов. Надеюсь, вы, ребята, сможете нам помочь.SQL Server - одновременное вложение в таблицу из нескольких клиентов - контрольный лимит и блок
Мы используем хранимую процедуру для совершения транзакций. В этой хранимой процедуре для каждой транзакции мы рассчитываем общий объем продаж до сих пор. Если общий объем продаж меньше установленного лимита, , то сделка будет разрешена. В противном случае транзакция будет отклонена.
он отлично работает много раз. Но иногда, когда несколько клиентов пытаются совершить транзакцию точно в одно и то же время, проверка ограничений не выполняется, как и транзакции.
Можете ли вы, ребята, предложить нам, как мы можем эффективно применять лимит все время? Есть ли лучший способ сделать это?
Спасибо!
Просьба представить структуру вашей таблицы и примеры данных. Является ли установленная предел константой для всех транзакций? –
Как бы то ни было, проблема может быть решена, если вы заставите хранимую процедуру работать намного быстрее. При 100-миллисекундной процедуре столкновения будут чрезвычайно редкими. Если вы разместите определение запроса и таблицы, мы можем предложить индекс, который делает общий расчет очень быстрым. – Andomar
, пожалуйста, найдите структуру таблицы. В этой сумме (ставке) для каждого номера ставки не должно превышать 1000. Этот предел 1000 сохраняется в другой таблице. \t [SlipID] [BIGINT] IDENTITY (1,1) NOT NULL, \t [TillID] [INT] NOT NULL, \t [Barcode] [VARCHAR] (30) NOT NULL, \t [GamingDate] [дата] NOT NULL, то \t [DrawID] [INT] NOT NULL, \t [BetNumber] [TINYINT] NOT NULL, \t [CurrencyID] [INT] NOT NULL, \t [Доля] [десятичное] (9, 2) NOT NULL , \t \t [SlipTime] [datetime] NOT NULL, – sammy