Для примера PostgreSQL:
UPDATE TableA AS a
SET param_from_table_a=FALSE -- param FROM TableA
FROM TableB AS b
WHERE b.id=a.param_id AND a.amount <> 0;
Можно использовать RowLock или другие подсказки, но необходимо быть осторожными..
Подсказка HOLDLOCK даст SQL Server команду содержать блокировку, пока Вы не будете фиксировать транзакцию. Подсказка БЛОКИРОВКИ СТРОКИ заблокирует только эту запись и не выпустит страницу или блокировку таблицы.
Блокировка будет также выпущена, если Вы закроете свое соединение, или это испытывает таймаут. Я был бы ОЧЕНЬ тщательным выполнением этого, так как оно остановит любые операторы SELECT, которые поражают эту строку, мертвую в их дорожках. SQL Server имеет многочисленные подсказки блокировки, что можно использовать. Вы видите их в Книгах Онлайн, когда Вы ищете или на HOLDLOCK или на БЛОКИРОВКЕ СТРОКИ.
Все, что Вы выполняете в сервере, происходит в транзакции, или неявной или явной.
Вы не можете просто заблокировать строку без транзакции (сделайте строку только для чтения). Можно сделать базу данных только для чтения, но не всего одна строка.
Объясните свою цель, и это могло бы быть лучшее решение. Уровни изоляции и подсказки блокировки и управление версиями строки.
Вам нужно заблокировать строку , или следует Блокировки приложений Sql Server делают то, что вам нужно?
Блокировки приложений - это просто блокировка с именем, которое вы можете «заблокировать», «разблокировать» и проверить, заблокировано ли оно. подробности см. по ссылке выше. (Они разблокируются, если ваше соединение закрывается и т. Д., Поэтому старайтесь очистить себя)