powered by simpleCommunicator - 2.0.30     © 2024 Programmizd 02
Map
Форумы / SQL [закрыт для гостей] / Топик ПапыхДжунства
6 сообщений из 6, страница 1 из 1
Топик ПапыхДжунства
    #196262
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Джунская задача на Оракле решается вообще без каких либо нюансов на MSSQL подозреваю они есть
Глобально это задача о пессимистической или оптимистической блокировке.

Есть список договоров. типа таблица.
мы открываем один договор в форме на редактирование. и не хотим чтобы в этом время его кто то еще редактировал.
поэтому берем ставим блокировку ну там транзакцию открыли.
И вроде типа все хорошо. Но нюанс
Скуль сервер запретит и чтение этой строки в других транзакциях

Что можно сделать можно сделать nolock , можно readpast
Но второй исключит строку из выборки. а первый прочитает незафикисированные данные. то есть не те которые были ДО блокировки а те которые вот прям ща.

Как с этим чуть чуть побороться ;-) - собрать апдейт или инсерт на клиентской части полностью. потом действуем и сразу же закрываем транзакцию.
тогда эти миллисекунды расхождения данных при селект нолоке не будут критичны.

а тот самый селект нолок будет показывать те данные которые были до блокировки (потому что мы тупо их не меняем)

в эту же тему второй вопрос
скажем кто то адын открыл договор на редактирование. каким образом запретить сделать это второму?
в оракле есть фор апдейт но вэйт а что есть в мсскуле

не галочку же ставить ?

Кстати а вот совсем Папых вопрос. По какой системной таблице или как вообще в MSSQL узнать заблокирована запись или нет ДО ТОГО как мы подвиснем на блокировке? ТОгда по идее это нормальный флаг что договор редактируется идите отсюда
...
Рейтинг: 0 / 0
Топик ПапыхДжунства
    #196269
Умник^практик
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
if exists(select 0 from table (nolock) where id_str = @id_str) ...
...
Изменено: 26.10.2022, 08:31 - Умник^практик
Рейтинг: 0 / 0
Топик ПапыхДжунства
    #196274
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Умник^практик  26.10.2022, 08:29
[игнорируется]
if exists(select 0 from table (nolock) where id_str = @id_str) ...
И чего? Хочешь сказать что с нолоком при блокировке будет пустая выборка? может ReadPast?
...
Изменено: 26.10.2022, 08:37 - Doublekey
Рейтинг: 0 / 0
Топик ПапыхДжунства
    #196279
Doublekey
Поместить в игнор-лист Сообщения автора в теме
Участник
[скрыт]
[заблокирован]
Код: SQL
1.
2.
begin tran
update mytable set mycolumn = 5 where testcol =1
readpast.jpg
ридпаст работает да. блокированная строка отсутствует в наборе. нолок показывает все в режиме грязного чтения.

В принципе канэшно можно вопрос считать решенным но все равно варианты интересны
...
Изменено: 26.10.2022, 08:45 - Doublekey
Рейтинг: 0 / 0
Топик ПапыхДжунства
    #196303
Просто Трёп
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Doublekey  26.10.2022, 08:11
[игнорируется]
собрать апдейт или инсерт на клиентской части полностью. потом действуем и сразу же закрываем транзакцию.
тогда эти миллисекунды расхождения данных при селект нолоке не будут критичны.
Я когда задумался над этим первый раз, решил только так и делать. И вообще отказался от уродских визуальных database-компонент, которые на тот момент были в Дельфи. Сперва выбираем все, что надо, располагаем на удобненьком юзерфрендли интерфейсике, после внесения изменений юзверь жмет "записать" или "Ок".

Кстати, до сих пор не могу привыкнуть к окнам настроек, в которых нет ok и cancel. Пиздец как бесит. Лишает возможности откатиться на шаг назад в случае ошибки.
...
Рейтинг: 0 / 0
Топик ПапыхДжунства
    #274699
Администратор
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Администратор
Тема была перенесена из форума 'Просто Трёп'.
...
Администратор:
Тема была перенесена из форума 'Просто Трёп'.
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / SQL [закрыт для гостей] / Топик ПапыхДжунства
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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