diff --git a/src/box/lua/schema.lua b/src/box/lua/schema.lua
index 036e5f2d97d4dd35d95e01c562690a364ecc0a66..14ad4de1cae9ffee3efc4ef3e4ba81e9b7c7af33 100644
--- a/src/box/lua/schema.lua
+++ b/src/box/lua/schema.lua
@@ -1068,7 +1068,8 @@ box.schema.index.alter = function(space_id, index_id, options)
     if sequence then
         _space_sequence:replace{space_id, sequence, sequence_is_generated}
     end
-    if sequence_tuple ~= nil and sequence_tuple.is_generated == true and
+    if sequence ~= nil and sequence_tuple ~= nil and
+       sequence_tuple.is_generated == true and
        sequence_tuple.sequence_id ~= sequence then
         -- Delete automatically generated sequence.
         box.schema.sequence.drop(sequence_tuple.sequence_id)
diff --git a/test/box/sequence.result b/test/box/sequence.result
index b3907659f9e413814c5b04cb5eb0ef9b8d3d015a..5eed0ef4cbbca4d39d1777a04c48936d3487c7a8 100644
--- a/test/box/sequence.result
+++ b/test/box/sequence.result
@@ -1871,3 +1871,36 @@ test_run:cmd("setopt delimiter ''");
 ---
 - true
 ...
+--
+-- gh-4214: error while altering an index with attached sequence.
+--
+s = box.schema.space.create('test')
+---
+...
+_ = s:create_index('pk', {sequence = true})
+---
+...
+sequence_id = s.index.pk.sequence_id
+---
+...
+sequence_id ~= nil
+---
+- true
+...
+s.index.pk:alter{parts = {1, 'integer'}}
+---
+...
+s.index.pk.parts[1].type
+---
+- integer
+...
+s.index.pk:alter{sequence = true}
+---
+...
+sequence_id == s.index.pk.sequence_id
+---
+- true
+...
+s:drop()
+---
+...
diff --git a/test/box/sequence.test.lua b/test/box/sequence.test.lua
index 96297d6f27ea9257f6dab67ee1a7286eafa0445f..6459419ede4f0b30a08b2f8e0e4d45c04bf33be0 100644
--- a/test/box/sequence.test.lua
+++ b/test/box/sequence.test.lua
@@ -634,3 +634,16 @@ identifier.run_test(
 	function (identifier) box.schema.sequence.drop(identifier) end
 );
 test_run:cmd("setopt delimiter ''");
+
+--
+-- gh-4214: error while altering an index with attached sequence.
+--
+s = box.schema.space.create('test')
+_ = s:create_index('pk', {sequence = true})
+sequence_id = s.index.pk.sequence_id
+sequence_id ~= nil
+s.index.pk:alter{parts = {1, 'integer'}}
+s.index.pk.parts[1].type
+s.index.pk:alter{sequence = true}
+sequence_id == s.index.pk.sequence_id
+s:drop()