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

box.schema.space.create()

box.schema.space.create(space-name [, {space_opts}])

box.schema.create_space(space-name [, {space_opts}])

Создание спейса. Можно использовать любой из этих вариантов. Например, s = box.schema.space.create('tester') дает тот же результат, что и s = box.schema.create_space('tester').

Существуют три варианта синтаксиса для ссылок на объекты спейсов, например box.schema.space.drop({space-id}) удаляет спейс. Однако обычно используются функции, привязанные к объектам спейсов, например space_object:drop().

Параметры:

Возвращает

объект спейса

Тип возвращаемого значения

userdata

space_opts

Параметры спейса, включающие идентификатор спейса, формат, количество полей, ограничения и внешние ключи и т. д. Эти параметры передаются методу box.schema.space.create().

if_not_exists

Создать спейс только в том случае, если спейс с таким именем еще не существует. В противном случае ничего не делать и не вызывать ошибку.

Тип: boolean

По умолчанию: false

engine

Движок хранения.

Тип: string

По умолчанию: memtx

Возможные значения: memtx, vinyl

id

Уникальный числовой идентификатор спейса: пользователи могут ссылаться на спейсы по этому идентификатору вместо имени.

Тип: number

По умолчанию: ID последнего спейса + 1

field_count

Фиксированное количество полей. Например, если field_count=5, нельзя вставить кортеж с количеством полей меньше или больше 5.

Тип: number

По умолчанию: 0 (не фиксировано)

user

Имя пользователя, который считается владельцем спейса в целях авторизации.

Тип: string

По умолчанию: имя текущего пользователя

format

Имена и типы полей. Примеры использования спецификации формата приведены в описании space_object:format() и в примере box.space._space. Необязательный параметр, обычно не указывается.

Тип: table

По умолчанию: пусто

is_local

Содержимое спейса является локальным для репликации: изменения сохраняются в журнале упреждающей записи локального узла, но репликация не выполняется.

Тип: boolean

По умолчанию: false

temporary

Содержимое спейса является временным: изменения не сохраняются в журнале упреждающей записи и репликация не выполняется.

Тип: boolean

По умолчанию: false

is_sync

Любая транзакция, выполняющая DML-запрос к этому спейсу, становится синхронной.

Пример:

box.schema.space.create('bands', { is_sync = true })    box.space.bands:format({        { name = 'id', type = 'unsigned' },        { name = 'band_name', type = 'string' },        { name = 'year', type = 'unsigned' }    })    box.space.bands:create_index('primary', { parts = { 'id' } })endfunction load_data()    box.space.bands:insert { 1, 'Roxette', 1986 }    box.space.bands:insert { 2, 'Scorpions', 1965 }    box.space.bands:insert { 3, 'Ace of Base', 1987 }    box.space.bands:insert { 4, 'The Beatles', 1960 }    box.space.bands:insert { 5, 'Pink Floyd', 1965 }    box.space.bands:insert { 6, 'The Rolling Stones', 1962 }    box.space.bands:insert { 7, 'The Doors', 1965 }    box.space.bands:insert { 8, 'Nirvana', 1987 }    box.space.bands:insert { 9, 'Led Zeppelin', 1968 }    box.space.bands:insert { 10, 'Queen', 1970 }end

Тип: boolean

По умолчанию: false

constraint

Ограничения, которым должны соответствовать кортежи спейса.

Тип: table

По умолчанию: пусто

Пример:

-- Define a tuple constraint function --box.schema.func.create('check_person', {    language = 'LUA',    is_deterministic = true,    body = 'function(t, c) return (t.age >= 0 and #(t.name) > 3) end'})-- Create a space with a tuple constraint --customers = box.schema.space.create('customers', {constraint = 'check_person'})

foreign_key

Внешние ключи для полей спейса.

Тип: table

По умолчанию: пусто

Пример:

-- Create a space with a tuple foreign key --box.schema.space.create("orders", {    foreign_key = {        space = 'customers',        field = {customer_id = 'id', customer_name = 'name'}    }})box.space.orders:format({    {name = "id", type = "number"},    {name = "customer_id" },    {name = "customer_name"},    {name = "price_total", type = "number"},})

Параметр

Можно создать?

Можно

Реплицируется?

Сохраняется?

(default)

нет

нет

да

да

temporary

нет

да

нет

нет

is_local

нет

да

нет

да

Пример:

tarantool> s = box.schema.space.create('space55')---...tarantool> s = box.schema.space.create('space55', {         >   id = 555,         >   temporary = false         > })---- error: Space 'space55' already exists...tarantool> s = box.schema.space.create('space55', {         >   if_not_exists = true         > })---...