Управление экземплярами
Чтобы получить общую информацию и взглянуть на примеры использования, см. раздел Управление транзакциями.
Соблюдайте следующие правила в работе с транзакциями:
Правило #1
Запросы в транзакции должны отправляться на сервер в виде единого блока. Недостаточно просто размещать их между началом транзакции и коммитом или откатом. Чтобы убедиться, что они отправляются в виде единого блока: поместите их в функцию, поместите их на одну строку или используйте символы-разделители, чтобы многостроковые запросы обрабатывались совместно.
Правило #2
Все операции с базой данных в рамках транзакции должны работать с одним движком баз данных. Небезопасно в рамках одной транзакции получать доступ к наборам кортежей, которые определяются по {engine='vinyl'}, а также к наборам кортежей, которые определяются по {engine='memtx'}.
Правило #3
Нельзя использовать запросы, которые могут приводить к изменению определения данных – создание, изменение, удаление, очистка.
Ниже приведен перечень всех функций для управления транзакциями.
| Имя | Использование |
|---|---|
| box.begin() | Начало транзакции |
| box.commit() | Окончание транзакции и сохранение всех изменений |
| box.rollback() | Окончание транзакции и отмена всех изменений |
| box.savepoint() | Получение дескриптора точки сохранения |
| box.rollback_to_savepoint() | Запрещение окончания транзакции и отмена всех изменений, сделанных после точки сохранения |
| box.atomic() | Выполнение функции как транзакции |
| box.on_commit() | Определение триггера, активируемого по box.commit |
| box.on_rollback() | Определение триггера, активируемого по box.rollback |
| box.is_in_txn() | Обозначение наличия активной транзакции |