Tarantool CE/EE Documentation portal logo
Support
Updated at September 7, 2026   01:25 PM

index_object:alter()

object index_object

index_object:alter({options})

Alter an index. It is legal in some circumstances to change one or more of the index characteristics, for example its type, its sequence options, its parts, and whether it is unique. Usually this causes rebuilding of the space, except for the simple case where a part's is_nullable flag is changed from false to true.

Parameters:

  • index_object (index_object) — an object

  • options (table) — index options (see index_opts)

Returns

nil

Possible errors:

  • index does not exist
  • the primary-key index cannot be changed to {unique = false}

Example 1:

You can add and remove fields that make up a primary index:

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'...

Example 2:

You can change index options for both memtx and vinyl spaces:

tarantool> box.space.space55.index.primary:alter({type = 'HASH'})---...tarantool> box.space.vinyl_space.index.i:alter({page_size=4096})---...