diff --git a/src/box/alter.cc b/src/box/alter.cc
index 431da12dae8bbd27b45155a2aaf569e5e48688a9..080a72b9f0aa85a92cf0694b6c2c86366db9f7fa 100644
--- a/src/box/alter.cc
+++ b/src/box/alter.cc
@@ -1501,13 +1501,8 @@ update_view_references(struct Select *select, int update_value,
 		const char *space_name = sql_src_list_entry_name(list, i);
 		if (space_name == NULL)
 			continue;
-		uint32_t space_id;
-		if (schema_find_id(BOX_SPACE_ID, 2, space_name,
-				   strlen(space_name), &space_id) != 0) {
-			sqlSrcListDelete(sql_get(), list);
-			return -1;
-		}
-		if (space_id == BOX_ID_NIL) {
+		struct space *space = space_by_name(space_name);
+		if (space == NULL) {
 			if (! suppress_error) {
 				assert(not_found_space != NULL);
 				*not_found_space = tt_sprintf("%s", space_name);
@@ -1516,7 +1511,6 @@ update_view_references(struct Select *select, int update_value,
 			}
 			continue;
 		}
-		struct space *space = space_by_id(space_id);
 		assert(space->def->view_ref_count > 0 || update_value > 0);
 		space->def->view_ref_count += update_value;
 	}
diff --git a/test/sql/view.result b/test/sql/view.result
index fd8fe00e3c0b60f4fedc23026b72d4605ccd4e13..e99a9bd7e0beeafb88681f11a716d49bd5770872 100644
--- a/test/sql/view.result
+++ b/test/sql/view.result
@@ -241,6 +241,34 @@ box.sql.execute("DROP TABLE c;")
 box.sql.execute("DROP TABLE b;")
 ---
 ...
+-- gh-3814: make sure that recovery of view processed without
+-- unexpected errors.
+--
+box.snapshot()
+---
+- ok
+...
+box.sql.execute("CREATE TABLE t2 (id INT PRIMARY KEY);")
+---
+...
+box.sql.execute("CREATE VIEW v2 AS SELECT * FROM t2;")
+---
+...
+test_run:cmd('restart server default')
+box.sql.execute("DROP TABLE t2;")
+---
+- error: 'Can''t drop space ''T2'': other views depend on this space'
+...
+box.sql.execute("SELECT * FROM v2;")
+---
+- []
+...
+box.space.V2:drop()
+---
+...
+box.space.T2:drop()
+---
+...
 -- Cleanup
 box.sql.execute("DROP VIEW v1;");
 ---
diff --git a/test/sql/view.test.lua b/test/sql/view.test.lua
index d05fb4a8c4b14f06c5d850e31eb7cad58308232f..592d7889c60196313ff7e1c926523707aab8cca6 100644
--- a/test/sql/view.test.lua
+++ b/test/sql/view.test.lua
@@ -104,6 +104,19 @@ box.space.BCV:drop()
 box.sql.execute("DROP TABLE c;")
 box.sql.execute("DROP TABLE b;")
 
+-- gh-3814: make sure that recovery of view processed without
+-- unexpected errors.
+--
+box.snapshot()
+box.sql.execute("CREATE TABLE t2 (id INT PRIMARY KEY);")
+box.sql.execute("CREATE VIEW v2 AS SELECT * FROM t2;")
+test_run:cmd('restart server default')
+
+box.sql.execute("DROP TABLE t2;")
+box.sql.execute("SELECT * FROM v2;")
+box.space.V2:drop()
+box.space.T2:drop()
+
 -- Cleanup
 box.sql.execute("DROP VIEW v1;");
 box.sql.execute("DROP TABLE t1;");