Управление экземплярами
Чтобы получить общую информацию и взглянуть на примеры использования, см. раздел Управление транзакциями.
Соблюдайте следующие правила в работе с транзакциями:
Правило #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() | Обозначение наличия активной транзакции |