Понятие locking
относится к продукции update
, а не read
. Когда запись заблокирована, обычно можно просмотреть запись; более важный вопрос: может ли кто-нибудь обновить запись, когда она заблокирована.
Синтаксис, о котором вы упомянули, будет искать поле по имени lock
в таблице.
Для pessimistic locking with rails, синтаксис выглядит следующим образом:
Query.where(:id => 1).lock(true)
Как объяснен в рельсах направляющих документаций я связана выше:
Пессимистическая блокировка использует механизм блокировки предоставленного основной базы данных.
Поэтому рекомендуется ознакомиться с документацией по базе данных, чтобы узнать, какой механизм блокировки предоставляется этой базой данных.
Играя с функцией блокировки в нескольких сеансах rails console
, я смог обновить запись из одного окна, в то время как одна и та же запись была заблокирована из другого окна.
Так что это не похоже на то, что моя версия базы данных sqlite не поддерживает блокировку.
Не забывайте, что блокировки освобождаются в конце текущей транзакции (т. Е. В конце инструкции, если нет явной транзакции). Пессимистический замок должен помешать дальнейшему чтению –