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

create_index

space_object:create_index(... [sequence='...' option] ...)

Опцию sequence={имя-последовательности} (или sequence={идентификатор-последовательности} или sequence=true) можно использовать при создании или изменении индекса первичного ключа. Последовательность связывается с индексом, так что следующий insert() поместит следующее сгенерированное число в поле первичного ключа, если это поле иначе было бы nil.

Синтаксис может быть любым из следующих: sequence = {идентификатор последовательности} или sequence = {id = {идентификатор последовательности}} или sequence = {field = {номер поля}} или sequence = {id = {идентификатор последовательности}, field = {номер поля}} или sequence = true или sequence = {}. Идентификатор последовательности может быть числом (идентификатором последовательности) или строкой (именем последовательности). Номер поля может быть порядковым номером любого поля в индексе; значение по умолчанию = 1. Примеры всех возможных вариантов: sequence = 1 или sequence = 'sequence_name' или sequence = {id = 1} или sequence = {id = 'sequence_name'} или sequence = {id = 1, field = 1} или sequence = {id = 'sequence_name', field = 1} или sequence = {field = 1} или sequence = true или sequence = {}. Обратите внимание, что идентификатор последовательности можно опустить — в этом случае новая последовательность создается автоматически с именем по умолчанию {имя-спейса}_seq. Обратите внимание, что номер поля не обязательно должен быть равен 1, то есть последовательность можно связать с любым полем в индексе первичного ключа.

Например, если 'Q' — это последовательность, а 'T' — новый спейс, то сработает следующее:

tarantool> box.space.T:create_index('Q',{sequence='Q'})---- unique: true  parts:  - type: unsigned    is_nullable: false    fieldno: 1  sequence_id: 8  id: 0  space_id: 514  name: Q  type: TREE...

(Обратите внимание, что у индекса теперь есть поле sequence_id.)

И это сработает:

tarantool> box.space.T:insert{box.NULL,0}---- [1, 0]...