Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Блокировка на конкурирующие обращения при вычитке / 3 сообщений из 3, страница 1 из 1
20.02.2015, 18:32
    #38885338
barabas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка на конкурирующие обращения при вычитке
Доброе <время суток>!

Подскажите как в FB можно залочить строку при вычитке, для того чтобы конкурирующая транзакция ее "не увидела".
Например есть клиенты и договора.
Изначально договора обезличены.
Клиенты выхватывают под себя договора по одному.
Нужно, максимально просто разрулить конкуренцию.

Вариант на Сиквеле:

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
    UPDATE d
    SET clientId = @clientId
    FROM [Tmp].[nkp].[dogovor] d
    WHERE dogovorId = (
                            SELECT TOP 1 dogovorId -- берем первый договор по списку сортировка по dogovorId
                            FROM [Tmp].[nkp].[dogovor] WITH(XLOCK, READPAST) -- накладываем блокировку и уровень чтения данных
                            WHERE clientId IS NULL
                            ORDER BY dogovorId
                           )



Спасибо!
...
Рейтинг: 0 / 0
20.02.2015, 18:42
    #38885343
Dimitry Sibiryakov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка на конкурирующие обращения при вычитке
barabasкак в FB можно залочить строку при вычитке, для того чтобы конкурирующая
транзакция ее "не увидела".
Никак, обломись.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
23.02.2015, 10:56
    #38886284
kdv
kdv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Блокировка на конкурирующие обращения при вычитке
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Блокировка на конкурирующие обращения при вычитке / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]