box.schema.space.create()
Создание спейса. Можно использовать любой из этих вариантов. Например, s = box.schema.space.create('tester') дает тот же результат, что и s = box.schema.create_space('tester').
Существуют три варианта синтаксиса для ссылок на объекты спейсов, например box.schema.space.drop({space-id}) удаляет спейс. Однако обычно используются функции, привязанные к объектам спейсов, например space_object:drop().
Параметры:
space-name(string) — имя спейса, которое должно соответствовать правилам именования объектовoptions(table) — параметры спейса (см. space_opts)
Возвращает
объект спейса
Тип возвращаемого значения
userdata
Параметры спейса, включающие идентификатор спейса, формат, количество полей, ограничения и внешние ключи и т. д. Эти параметры передаются методу box.schema.space.create().
Создать спейс только в том случае, если спейс с таким именем еще не существует. В противном случае ничего не делать и не вызывать ошибку.
Тип: boolean
По умолчанию: false
Тип: string
По умолчанию: memtx
Возможные значения: memtx, vinyl
Уникальный числовой идентификатор спейса: пользователи могут ссылаться на спейсы по этому идентификатору вместо имени.
Тип: number
По умолчанию: ID последнего спейса + 1
Фиксированное количество полей. Например, если
field_count=5, нельзя вставить кортеж с количеством полей меньше или
больше 5.
Тип: number
По умолчанию: 0 (не фиксировано)
Имя пользователя, который считается владельцем спейса в целях авторизации.
Тип: string
По умолчанию: имя текущего пользователя
Имена и типы полей. Примеры использования спецификации формата приведены в описании space_object:format() и в примере box.space._space. Необязательный параметр, обычно не указывается.
Тип: table
По умолчанию: пусто
Содержимое спейса является локальным для репликации: изменения сохраняются в журнале упреждающей записи локального узла, но репликация не выполняется.
Тип: boolean
По умолчанию: false
Содержимое спейса является временным: изменения не сохраняются в журнале упреждающей записи и репликация не выполняется.
Тип: boolean
По умолчанию: false
Любая транзакция, выполняющая 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
Ограничения, которым должны соответствовать кортежи спейса.
Тип: 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'})
Внешние ключи для полей спейса.
Тип: 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> })---...