использование последовательностей в create_index()
-
space_object:
create_index
(... [sequence='...' option] ...) Можно использовать опцию
sequence=имя-последовательности
(илиsequence=id-последовательности
, илиsequence=true
) при создании или изменении первичного индекса. Происходит ассоциация последовательности с индексом, так что следующий вызовinsert()
поместит следующее сгенерированное число в поле первичного ключа, если в противном случае поле было бы nil.Например, если „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] ...
Примечание
Если вы используете отрицательные числа в параметрах последовательности, убедитесь, что тип ключа индекса будет целое число „integer“. В противном случае, тип ключа может быть либо „integer“, либо „unsigned“ (без знака).
A sequence cannot be dropped if it is associated with an index. However, index_object:alter() can be used to say that a sequence is not associated with an index, for example
box.space.T.index.I:alter({sequence=false})
.