Добро пожаловать в форум, Guest >> Войти | Регистрация | Поиск | Правила | | В избранное | Подписаться | ||
Все форумы / Microsoft SQL Server |
![]() ![]() |
FOGOT-BAstA Member Откуда: Сообщений: 197 |
Добрый день! Нужны советы в решении такой задачи: надо реализовать блокировку записи (строки) в БД, когда пользователь нажимает на CheckBox в приложении, т.е. нажал и запись заблокировалась, и только чтобы этот же пользователь мог отжать CheckBox и запись обратно становилась доступной! Пробовал вот таким запросом заблочить SELECT * FROM Nastroyka WITH (ROWLOC) WHERE ID=1 Чет не проканало. Поделитесь советом! Спасибо заранее! |
12 авг 13, 08:26 [14694696] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Страдалец, тибе сначала надо вкурить разницу между 1. бизнес-блокировкой 2. транзакционной блокировкой. 1-я накладывается ПРИЛОЖЕНИЕМ для оповещения прочих типо: "я плющу эту запись - не мешать". 2-я накладывается СЕРВЕРОМ для обеспечения транзакционной целостности. Использовать вторую в качестве первой - это плохая идея. Поправить твой опус лехко begin transaction SELECT * FROM Nastroyka WITH (ROWLOC) WHERE ID=1 тока это не понравится людям. Надо как-то так update N set Locked = <ну, тут есть свои сложности... с разблокировкой> FROM Nastroyka N WHERE ID=1; if @@trancount > 0 commit; |
12 авг 13, 08:36 [14694724] Ответить | Цитировать Сообщить модератору |
fthjj
Guest |
FOGOT-BAstA, select id, c1,... from ( update t1 output id, c1, c2, c3, ... set locked = 1 where id = @id ) d |
12 авг 13, 08:41 [14694744] Ответить | Цитировать Сообщить модератору |
aleks2
Guest |
Msg 10729, Level 15, State 1, Line 6 A nested INSERT, UPDATE, DELETE, or MERGE statement is not allowed in a SELECT statement that is not the immediate source of rows for an INSERT statement. |
||
12 авг 13, 08:44 [14694756] Ответить | Цитировать Сообщить модератору |
StarikNavy Member Откуда: Москва Сообщений: 2396 |
как уже подсказали, лучше всего ставить флажок "не трогать" (через update), и соответственно в других местах проверять его |
||
12 авг 13, 09:50 [14694953] Ответить | Цитировать Сообщить модератору |
Ken@t Member Откуда: 大地 Сообщений: 3264 |
для этого прмдумали sp_getapplock, sp_releaseapplock , APPLOCK_MODE, APPLOCK_TEST |
||||
12 авг 13, 09:54 [14694972] Ответить | Цитировать Сообщить модератору |
FOGOT-BAstA Member Откуда: Сообщений: 197 |
В sp_getapplock что значат типы блокировок: Shared, Update, IntentShared, IntentExclusive или Exclusive?? APPLOCK_MODE я так понял на базу полностью распространяется? |
14 авг 13, 12:14 [14706972] Ответить | Цитировать Сообщить модератору |
Glory Member Откуда: Сообщений: 104760 |
Тип блокировки означает тип блокировки
Какую еще базу ? Вы пытаетесь блокировать ресурс |
||||
14 авг 13, 12:20 [14707020] Ответить | Цитировать Сообщить модератору |
alexeyvg Member Откуда: Moscow Сообщений: 31783 |
Но можно найти в английском MSDN http://msdn.microsoft.com/en-us/library/ms175519(SQL.100).aspx |
||
14 авг 13, 13:02 [14707369] Ответить | Цитировать Сообщить модератору |
Все форумы / Microsoft SQL Server | ![]() |