本节内容:
oracle视图创建、oracle视图授权
单表创建的视图是可以增、删、改。多表创建的视图是不能直接进行视图添加等更新。
解决办法:
替代触发器。
具体sql语句,如下:
create or replace trigger 名称
instead of insert or update or delete
on 视图
for each row
declare
begin
if inserting then
insert into 基本表1 (t11,t12) values (:new.f1,:new.f2);
insert into 基本表2 (t11,t22) values (:new.f1,:new.f3);
elsif updating then
update 基本表1 set t11=:new.f1,t12=:new.f2 where t11=:new.f1;
update 基本表2 set t11=:new.f1,t22=:new.f3 where t11=:new.f1;
elsif deleting then
delete from 基本表1 where t11=:old.f1;
delete from 基本表2 where t11=:old.f1;
第二部分,oracle建视图授权的 例子
oracle建视图授权:
A用戶 下有table TabA
A1 用戶建立view (V_TabA) , view中是引用A 用戶下的TabA .
A2 用戶要 select A1 用户下的这个view .
采用直接赋予权限的方式,很可能会碰到错误:
ORA-01720: grant option does not exist for ......
一般采取的方法 :
1. 以基表用户A 登入(如果多个基表,那么多次运行) 或SYS登陆
2. 以view 的拥有用户登入
3. 以 A2 登入即可以访问view了