Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
26.10.2022, 08:11
|
|||
---|---|---|---|
Топик ПапыхДжунства |
|||
#18+
Джунская задача на Оракле решается вообще без каких либо нюансов на MSSQL подозреваю они есть Глобально это задача о пессимистической или оптимистической блокировке. Есть список договоров. типа таблица. мы открываем один договор в форме на редактирование. и не хотим чтобы в этом время его кто то еще редактировал. поэтому берем ставим блокировку ну там транзакцию открыли. И вроде типа все хорошо. Но нюанс Скуль сервер запретит и чтение этой строки в других транзакциях Что можно сделать можно сделать nolock , можно readpast Но второй исключит строку из выборки. а первый прочитает незафикисированные данные. то есть не те которые были ДО блокировки а те которые вот прям ща. Как с этим чуть чуть побороться - собрать апдейт или инсерт на клиентской части полностью. потом действуем и сразу же закрываем транзакцию. тогда эти миллисекунды расхождения данных при селект нолоке не будут критичны. а тот самый селект нолок будет показывать те данные которые были до блокировки (потому что мы тупо их не меняем) в эту же тему второй вопрос скажем кто то адын открыл договор на редактирование. каким образом запретить сделать это второму? в оракле есть фор апдейт но вэйт а что есть в мсскуле не галочку же ставить ? Кстати а вот совсем Папых вопрос. По какой системной таблице или как вообще в MSSQL узнать заблокирована запись или нет ДО ТОГО как мы подвиснем на блокировке? ТОгда по идее это нормальный флаг что договор редактируется идите отсюда ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.10.2022, 08:29
|
|||
---|---|---|---|
|
|||
Топик ПапыхДжунства |
|||
#18+
if exists(select 0 from table (nolock) where id_str = @id_str) ... ... |
|||
:
Изменено: 26.10.2022, 08:31 - Умник^практик
Нравится:
Не нравится:
|
|||
|
26.10.2022, 08:36
|
|||
---|---|---|---|
Топик ПапыхДжунства |
|||
#18+
if exists(select 0 from table (nolock) where id_str = @id_str) ... ... |
|||
:
Изменено: 26.10.2022, 08:37 - Doublekey
Нравится:
Не нравится:
|
|||
|
26.10.2022, 08:42
#196279
Ссылка:
Ссылка на сообщение:
Ссылка с названием темы:
Ссылка на профиль пользователя:
Ссылка на вложение:
|
|||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Топик ПапыхДжунства |
|||||||||||||||
#18+
Код: SQL 1. 2.
В принципе канэшно можно вопрос считать решенным но все равно варианты интересны ... |
|||||||||||||||
:
Изменено: 26.10.2022, 08:45 - Doublekey
Нравится:
Не нравится:
|
|||||||||||||||
|
26.10.2022, 09:30
|
|||
---|---|---|---|
|
|||
Топик ПапыхДжунства |
|||
#18+
собрать апдейт или инсерт на клиентской части полностью. потом действуем и сразу же закрываем транзакцию. тогда эти миллисекунды расхождения данных при селект нолоке не будут критичны. Кстати, до сих пор не могу привыкнуть к окнам настроек, в которых нет ok и cancel. Пиздец как бесит. Лишает возможности откатиться на шаг назад в случае ошибки. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=32&mobile=1&tid=5515]: |
0ms |
get settings: |
23ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
477ms |
get tp. blocked users: |
2ms |
others: | 26ms |
total: | 606ms |
0 / 0 |