创建视图的时候使用 with check option 语句 保证插入和修改操作时视图只有年龄为22的学生。

SQL> connect system/lixiang666;
已连接。
SQL> select * from stu;

SON      SNAME                      SAGE
-------- -------------------- ----------
1001     张三                         18
1003     李四                         22
1002     王五                         19

SQL> create view st22
  2  as
  3  select son,sname,sage
  4  from stu
  5  where sage=22
  6  with check option;

视图已创建。

SQL> insert into st22
  2  values('2222','哈哈',22);

已创建 1 行。

SQL> insert into st22
  2  values('1254','赵四',18);
insert into st22
            *1 行出现错误:
ORA-01402: 视图 WITH CHECK OPTION where 子句违规
SQL> select * from st22;

SON      SNAME                      SAGE
-------- -------------------- ----------
1003     李四                         22
2222     哈哈                         22

SQL> select sage,count(*) from stu group by sage;

      SAGE   COUNT(*)
---------- ----------
        22          2
        18          1
        19          1

SQL> create view viewtemp(sage,count)
  2  as
  3  select sage,count(*) from stu group by sage;

视图已创建。

SQL> select * from viewtemp;

      SAGE      COUNT
---------- ----------
        22          2
        18          1
        19          1
        
 SQL> insert into viewtemp values(30,3);
insert into viewtemp values(30,3)
*1 行出现错误:
ORA-01733: 此处不允许虚拟列


SQL> update viewtemp set count=3 where sage=18
  2  ;
update viewtemp set count=3 where sage=18
       *1 行出现错误:
ORA-01732: 此视图的数据操纵操作非法