В Oracle есть эквивалент, но использовать его не обязательно. Вот пример:
Стол:
SQL> create table t (id,name)
2 as
3 select 1, 'StackOverflow' from dual
4 /
Table created.
Вид:
SQL> create view v
2 as
3 select id
4 , name
5 from t
6 /
View created.
Что действительно:
SQL> select *
2 from v
3 /
ID NAME
---------- -------------
1 StackOverflow
1 row selected.
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
VALID
1 row selected.
Теперь сделайте что-нибудь с базовой таблицей:
SQL> alter table t add (description varchar2(100))
2 /
Table altered.
Поскольку Oracle хранит зависимости (см. Представления DBA / ALL / USER_DEPENDENCIES), представление помечается как недействительное:
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
INVALID
1 row selected.
Но вы все равно можете выбрать из него. Oracle все равно пытается выполнить его, даже если знает, что представление помечено как НЕДОПУСТИМО:
SQL> select *
2 from v
3 /
ID NAME
---------- -------------
1 StackOverflow
1 row selected.
И, выбрав из вида, он снова пометил вид VALID:
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
VALID
1 row selected.
Вы также можете скомпилировать вид, чтобы убедиться, что он действителен заранее:
SQL> alter table t add (description2 varchar2(100))
2 /
Table altered.
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
INVALID
1 row selected.
SQL> alter view v compile
2 /
View altered.
«Компиляция» представления помечает его как действительный:
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
VALID
1 row selected.
Если изменение влияет на представление таким образом, что базовый запрос больше не может выполняться:
SQL> alter table t drop column name
2 /
Table altered.
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
INVALID
1 row selected.
Тогда вы получите ошибку во время выполнения:
SQL> select *
2 from v
3 /
from v
*
ERROR at line 2:
ORA-04063: view "OWNER.V" has errors
SQL> select status
2 from user_objects
3 where object_name = 'V'
4 /
STATUS
-------
INVALID
1 row selected.
Надеюсь, это поможет.
С уважением,
Роб.