Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

atomic

box.atomic([opts,] tx-function [, function-arguments])

Выполнение функции, действующее так, как будто функция начинается с неявного box.begin() и заканчивается неявным box.commit() при успехе или неявным box.rollback() при ошибке.

Параметры:

  • opts (table) — (необязательно) параметры транзакции:
  • 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)