create_index
Опцию 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: trueparts:- type: unsignedis_nullable: falsefieldno: 1sequence_id: 8id: 0space_id: 514name: Qtype: TREE...
(Обратите внимание, что у индекса теперь есть поле sequence_id.)
И это сработает:
tarantool> box.space.T:insert{box.NULL,0}---- [1, 0]...