index_object:alter()
-
object
index_object
¶ -
index_object:
alter
({options})¶ Изменение индекса. В определенных обстоятельствах можно изменять некоторые характеристики индекса, например тип, параметры последовательности и определение его уникальности. Тем не менее, это обычно приводит к перестроению спейса за исключением простого случая, когда значение флага
is_nullable
меняется сfalse
наtrue
.Параметры: - index_object (
index_object
) – ссылка на объект. - options (
table
) – index options (see index_opts)
возвращает: nil
Возможные ошибки:
- index does not exist
- the primary-key index cannot be changed to
{unique = false}
Примечание
Vinyl does not support
alter()
of a primary-key index unless the space is empty.Пример 1:
Можно добавлять и удалять поля, которые составляют первичный индекс:
tarantool> s = box.schema.create_space('test') --- ... tarantool> i = s:create_index('i', {parts = {{field = 1, type = 'unsigned'}}}) --- ... tarantool> s:insert({1, 2}) --- - [1, 2] ... tarantool> i:select() --- - - [1, 2] ... tarantool> i:alter({parts = {{field = 1, type = 'unsigned'}, {field = 2, type = 'unsigned'}}}) --- ... tarantool> s:insert({1, 't'}) --- - error: 'Tuple field 2 type does not match one required by operation: expected unsigned' ...
Пример 2:
Можно изменять опции индекса для спейсов как в memtx’е, так и в vinyl’е:
tarantool> box.space.space55.index.primary:alter({type = 'HASH'}) --- ... tarantool> box.space.vinyl_space.index.i:alter({page_size=4096}) --- ...
- index_object (
-