CollectionFind::lockExclusive

(No version information available, might only be in Git)

CollectionFind::lockExclusiveВыполняет операцию с EXCLUSIVE LOCK

Описание

public mysql_xdevapi\CollectionFind::lockExclusive ( int $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();
?>