create or replace view v_emp as select empno,ename,sal from emp;
select * from v_emp; --使用视图
update v_emp set sal=5555 where empno=7782; --可以更新
commit;
--只读视图
create or replace view v_emp
as select empno,ename,sal from emp order by sal with read only; --只读
--在视图上也可以使用修改数据的DML语句,如INSERT、UPDATE和DELETE
--视图上的DML语句有如下限制:
--只能修改一个底层的基表
--如果修改违反了基表的约束条件,则无法更新视图
--如果视图包含连接操作符、DISTINCT 关键字、集合操作符、聚合函数或
--GROUP BY 子句,则将无法更新视图
--如果视图包含伪列或表达式,则将无法更新视图
--连接视图使用DML只能修改单个基表
create or replace view v_emp_dept
as
select e.empno,e.ename,e.sal,d.deptno,d.dname from emp e
inner join dept d on e.deptno=d.deptno;
--重新编译视图 基表使用alter table修改后视图将失效 需要重新编译
alter view v_emp_dept compile
Oracle视图
最新推荐文章于 2024-05-29 10:15:00 发布