Блокирование таблицы

Функция

Определение оператора блокирования таблицы.

Спецификация
     
< блокирование таблицы >::=
< режим доступа >::=
{ SHARE | EXCLUSIVE }
Синтаксические правила
  1. < Имя таблицы > должно ссылаться на базовую таблицу. Если < режим доступа > не указан, по умолчанию принимается EXCLUSIVE.

  2. Если опция WAIT (NOWAIT) не указана, по умолчанию принимается WAIT.

    lock table auto in share mode wait;
Общие правила
  1. < Режим доступа > SHARE позволяет другим пользователям БД только читать блокированную таблицу.

  2. < Режим доступа > EXCLUSIVE/SHARE блокирует доступ к таблице не только других пользователей БД, но и доступ того же пользователя по его другим соединениям с БД, т.к. соединения, открытые разными процессами или нитями от имени одного и того же пользователя (например, c помощью команды OPEN интерфейса нижнего уровня) конкурируют за доступ к БД как разные пользователи. Если несколько соединений открыты одной нитью, такой конкуренции между ними не происходит.

  3. Опция WAIT (NOWAIT) задает реакцию пользователя на невозможность блокирования таблицы в данный момент: WAIT – ждать момента, когда таблицу можно будет блокировать, NOWAIT – отказаться от блокирования таблицы и вернуть соответствующий код завершения.

  4. Блокировка таблицы отменяется SQL-операторами:

    • в режиме AUTOCOMMIT: UNLOCK, COMMIT;

    • в режиме PESSIMISTIC: COMMIT, ROLLBACK.