Обновлена 15 сентября 2026 г. в 08:55
atomic
Выполнение функции, действующее так, как будто функция начинается с неявного box.begin() и заканчивается неявным box.commit() при успехе или неявным box.rollback() при ошибке.
Параметры:
opts(table) — (необязательно) параметры транзакции:txn_isolation— уровень изоляции транзакцийtimeout— время ожидания (в секундах), по истечении которого транзакция откатывается
tx-function(string) — имя функцииfunction-arguments— (необязательно) аргументы, передаваемые в функцию
Возвращает
результат функции, переданной в atomic() в качестве аргумента
Возможные ошибки:
- ошибка и откат транзакции в случае конфликта.
- ошибка и откат транзакции при превышении времени ожидания.
- ошибка при сбое записи на диск.
- ошибка, если по какой-либо причине не удается выделить память.
Пример
-- Создание индекса с указанной последовательностью --box.schema.sequence.create('id_sequence', { min = 1 })box.space.bands:create_index('primary', { parts = { 'id' }, sequence = 'id_sequence' })-- Вставка тестовых данных --box.space.bands:insert { 1, 'Roxette', 1986 }box.space.bands:insert { 2, 'Scorpions', 1965 }box.space.bands:insert { 3, 'Ace of Base', 1987 }-- Определение функции --local function insert_band(band_name, year)box.space.bands:insert { nil, band_name, year }end-- Неявное начало и фиксация транзакции --box.atomic(insert_band, 'The Beatles', 1960)-- Начало транзакции с указанным уровнем изоляции --box.atomic({ txn_isolation = 'read-committed' },insert_band, 'The Rolling Stones', 1962)