(No version information available, might only be in Git)
CollectionFind::lockExclusive — Выполняет операцию с EXCLUSIVE LOCK
$lock_waiting_option
] ) : mysql_xdevapi\CollectionFindБлокирует исключительно документ, другие транзакции блокируются с момента обновления документа и до тех пор, пока документ заблокирован. Пока документ заблокирован, другие транзакции не могут обновлять эти документы, выполнять SELECT ... LOCK IN SHARE MODE или читать данные на определенных уровнях изоляции транзакций. Последовательные чтения игнорируют любые блокировки, установленные для записей, которые существуют в представлении чтения.
Функция полезна непосредственно с командой modify(), чтобы избежать проблем параллелизма. По сути, она сериализует доступ к строке через блокировку строки.
lock_waiting_option
Дополнительная опция ожидания. По умолчанию имеет значение MYSQLX_LOCK_DEFAULT
.
Допустимые значения представлены константами:
MYSQLX_LOCK_DEFAULT
MYSQLX_LOCK_NOWAIT
MYSQLX_LOCK_SKIP_LOCKED
Возвращает объект CollectionFind, который можно использовать для дальнейшей обработки.
Пример #1 Пример использования mysql_xdevapi\CollectionFind::lockExclusive()
<?php
$session = mysql_xdevapi\getSession("mysqlx://user:password@localhost");
$schema = $session->getSchema("addressbook");
$collection = $schema->createCollection("people");
$session->startTransaction();
$result = $collection
->find("age > 50")
->lockExclusive()
->execute();
// ... выполняем операцию с объектом
// Завершаем транзакцию и разблокируем документ
$session->commit();
?>