oracle多表创建视图与oracle视图授权

发布时间:2020-11-12编辑:脚本学堂
本文介绍了oracle中多表创建视图的方法,以及oracle视图授权的方法,感兴趣的朋友参考下。

本节内容:
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登陆
 

sql>connect    A/A
sql>grant  select on TabA to A1 with  grant  option; 允许A1授权给A2

2. 以view 的拥有用户登入
 

sql>connect   A1/A1
sql>grant select on A1.V_TabA to   A2;

3. 以 A2 登入即可以访问view了
 

sql>connect  A2/A2 
sql>select  * from A1.V_TabA;