Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Update в процедуре одновременно несколько  [new]
SDAG
Member

Откуда:
Сообщений: 27
Доброго времени суток . Написал процедуру :

ALTER PROCEDURE [dbo].[myDbProcedure]
@ID int

AS
BEGIN 
SET NOCOUNT ON;

IF EXISTS (SELECT * FROM [myDB] WHERE @ID = [ID])
UPDATE [myDB]
SET [count] = [count] - 1
, [paymentCount]  = [paymentCount]  + 1
WHERE @ID = [ID] 

END


Но есть проблема если одновременно 100 человек (вызовят процедуру) обновят таблицу , то обновит тому кто первый сделал , а меня это не утстраивает.
Помогите пожалуйста решить проблему
30 май 13, 15:28    [14370897]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Glory
Member

Откуда:
Сообщений: 104751
SDAG
Помогите пожалуйста решить проблему

А в чем проблема то ?
Должен только 2ой обновить ? Или только 100ый ?
30 май 13, 15:29    [14370915]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
SDAG
Member

Откуда:
Сообщений: 27
Должен обновит столько раз сколько запросов будет . Например 100 запросов одновременно ,должен обновить все 100
30 май 13, 15:31    [14370929]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Glory
Member

Откуда:
Сообщений: 104751
SDAG
Должен обновит столько раз сколько запросов будет . Например 100 запросов одновременно ,должен обновить все 100

Ну так ведь так и будет.
30 май 13, 15:32    [14370938]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Паганель
Member

Откуда: Винница
Сообщений: 22550
интересно как автор определил одновременность
30 май 13, 15:34    [14370948]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
SDAG
Member

Откуда:
Сообщений: 27
Glory
SDAG
Должен обновит столько раз сколько запросов будет . Например 100 запросов одновременно ,должен обновить все 100

Ну так ведь так и будет.

Одно другому мешать не будет ? В одной статье как-то прочитал если одновременно несколько запросов будет то выполняется тот запрос который был первый .
Я думаю в данном случае больше понадобится
set transaction isolation level
30 май 13, 15:36    [14370967]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Гость333
Member

Откуда:
Сообщений: 3683
SDAG
В одной статье как-то прочитал если одновременно несколько запросов будет, то первым выполняется тот запрос который был первый

Может, так было в статье?
30 май 13, 15:38    [14370981]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Glory
Member

Откуда:
Сообщений: 104751
SDAG
Одно другому мешать не будет ? В одной статье как-то прочитал если одновременно несколько запросов будет то выполняется тот запрос который был первый .

Разумеется все 100 запросов не смогут поменять одновременно значение
Разумеется они будут выполнены в каком то порядке.
И каждый следующий запрос сможет выполниться только тогда, когда закончиться предыдущий.

SDAG
Я думаю в данном случае больше понадобится
set transaction isolation level

Лучше всего в данном случае понадобится чтение литературы о конкуренции доступа.
30 май 13, 15:40    [14371000]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
SDAG
Доброго времени суток . Написал процедуру :
[spoiler]
ALTER PROCEDURE [dbo].[myDbProcedure]
@ID int

AS
BEGIN 
SET NOCOUNT ON;

IF EXISTS (SELECT * FROM [myDB] WHERE @ID = [ID])
UPDATE [myDB]
SET [count] = [count] - 1
, [paymentCount]  = [paymentCount]  + 1
WHERE @ID = [ID] 

END

[spoiler]
Но есть проблема если одновременно 100 человек (вызовят процедуру) обновят таблицу , то обновит тому кто первый сделал , а меня это не утстраивает.
Помогите пожалуйста решить проблему


Просто другие 99 на момент выполнения первого запроса встанут в очередь, и как только таблица освободится её займёт второй запрос и так далее.
30 май 13, 15:40    [14371004]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
SDAG
Member

Откуда:
Сообщений: 27
Лучше всего в данном случае понадобится чтение литературы о конкуренции доступа.


Спасибо , но пока найду литературу помогите пожалуйста советами , времени просто мало не успею найти литературу
30 май 13, 15:43    [14371026]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Сергей Викт.
Member

Откуда: Москва
Сообщений: 888
SDAG
Лучше всего в данном случае понадобится чтение литературы о конкуренции доступа.


Спасибо , но пока найду литературу помогите пожалуйста советами , времени просто мало не успею найти литературу

А что советовать-то? Процедура написана, работать будет. Вам уважаемый Glory уже посоветовал почитать о конкуренции доступа.
30 май 13, 15:44    [14371045]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Glory
Member

Откуда:
Сообщений: 104751
SDAG
Спасибо , но пока найду литературу помогите пожалуйста советами

Совет - не рассуждайте о том, чего не знаете.
30 май 13, 15:45    [14371055]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
SDAG
Member

Откуда:
Сообщений: 27
Просто другие 99 на момент выполнения первого запроса встанут в очередь, и как только таблица освободится её займёт второй запрос и так далее.


Значит оно все сделает автоматически ? Никакого добавления кода не нужно ?
30 май 13, 15:45    [14371057]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
Glory
Member

Откуда:
Сообщений: 104751
SDAG
Значит оно все сделает автоматически ?

Все эта процедура сделать не может. тем более автоматически.

SDAG
Никакого добавления кода не нужно ?

Откуда известно, нужно ли вам добавлять в процедуру код ?
30 май 13, 15:47    [14371072]     Ответить | Цитировать Сообщить модератору
 Re: Update в процедуре одновременно несколько  [new]
SDAG
Member

Откуда:
Сообщений: 27
Всем огромное спасибо пойду читать литературу
30 май 13, 15:47    [14371074]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить