Блокировка строки в SQL 2005-2008

Есть ли способ заблокировать строку в базе данных SQL 2005-2008 без запуска транзакции, чтобы другие процессы не могли обновить строку, пока она не будет разблокирована?

ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
7
0
19 425
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Все, что вы выполняете на сервере, происходит в транзакции, явной или неявной.

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

Объясните свою цель, и это может быть лучшим решением. Уровни изоляции и подсказки блокировки и управление версиями строк.

Ответ принят как подходящий

Вы можете использовать RowLock или другие подсказки, но вы должны быть осторожный ..

Подсказка HOLDLOCK укажет SQL Server удерживать блокировку до тех пор, пока вы не зафиксируете транзакцию. Подсказка ROWLOCK заблокирует только эту запись и не вызовет блокировку страницы или таблицы.

Блокировка также будет снята, если вы закроете свое соединение или оно истечет. Я был бы ОЧЕНЬ осторожен, делая это, так как это остановит любые операторы SELECT, которые попадут в эту строку на своем пути. В SQL Server есть множество подсказок по блокировке, которые вы можете использовать. Вы можете увидеть их в электронной документации при поиске по HOLDLOCK или ROWLOCK.

Я пробовал это, но это не то, что мне нужно. Он действительно держит блокировку, когда я выполняю обновление. Обновление ждет, пока блокировка не будет снята, и после этого обновляет запись (это не то, что я хочу). Во-вторых, я все еще могу выполнить выбор без каких-либо проблем.

Martijn 22.09.2010 12:26

Вам нужно заблокировать ряд, или Блокировки приложений Sql Server должен делать то, что вам нужно?

Блокировка приложений - это просто блокировка с именем, которое вы можете «заблокировать», «разблокировать» и проверить, заблокирована ли она. подробности см. по ссылке выше. (Они разблокируются, если ваше соединение закрывается и т. д., Поэтому старайтесь очистить себя)

Я не могу использовать блокировки приложений, потому что другие приложения, обращающиеся к «заблокированной» строке, не знают, что им нужно сначала проверить блокировку приложения.

alex 22.09.2009 23:49

Другие вопросы по теме