Простой вопрос.
Если я использую DB :: Transactions (), и я делаю следующее:
DB::transaction(function()
{
$result =
DB::table('orders')->select('id')->where('id', '>', 17)->lockForUpdate()->get();
});
Что произойдет, если я выполню этот скрипт точно в том же разбиенииsecond?
Laravel говорит:
В качестве альтернативы вы можете использовать метод lockForUpdate.Блокировка «для обновления» предотвращает изменение строк или их выбор с помощью другой общей блокировки.
Блокирует ли блокировка блокировки для чтения в то же самое времявремя, или это влияет только при следующем обновлении строки?
Могу ли я гарантировать, что скрипт уже читает из этой строки, тогда параллельный скрипт в ту же миллисекунду будетсбой и ПОДОЖДИТЕ для транзакции снять блокировку перед тем, как пытаться запустить код?
Я не нашел нигде супер ясного ответа, все примеры пытаются обновить или вставить.Я просто хочу защититься от одновременного выбора.