我正在大学学习 Oracle9i 服务器。
我已授予我的朋友选择和插入视图的权限 'v1'。
他可以在视图上select
和insert
,但显然视图在插入行时会为其用户ID维护一个单独的副本。
即。当我说:
select * from v1;
我无法看到他插入视频'v1'的行。这是默认行为吗?我不应该看到他插入的行,因为它仍然拥有由我?
我是新手,所以我想我不了解有关视图和授予权限的一些概念。
答案 0 :(得分:1)
如果其他用户实际插入的行符合视图标准而另一个用户正在提交其事务,那么您将能够在会话中看到该行。
SELECT * FROM Pavitar.v1
)例如,如果我创建一个视图EMP_VIEW
,它返回EMP
表中DEPTNO
为10的所有数据,我可以在EMP
中插入一行表格通过没有DEPTNO
10的视图。
SQL> create or replace view emp_view
2 as
3 select *
4 from emp
5 where deptno=10;
View created.
SQL> insert into emp_view( empno, ename, job )
2 values( 7623, 'PAV', 'Dev' );
1 row created.
所以如果我查询视图
,我就不会看到该行SQL> select empno, ename, job
2 from emp_view;
EMPNO ENAME JOB
---------- ---------- ---------
7782 CLARK MANAGER
7839 KING PRESIDENT
7934 MILLER CLERK
但我会在基础表中看到它
1 select empno, ename, job
2* from emp
SQL> /
EMPNO ENAME JOB
---------- ---------- ---------
7623 PAV Dev
7369 smith CLERK
7499 ALLEN SALESMAN
7521 WARD SALESMAN
7566 JONES MANAGER
7654 MARTIN SALESMAN
7698 BLAKE MANAGER
7782 CLARK MANAGER
7788 SCOTT ANALYST
7839 KING PRESIDENT
7844 TURNER SALESMAN
7876 ADAMS CLERK
7900 SM0 CLERK
7902 FORD ANALYST
7934 MILLER CLERK
1234 FOO
16 rows selected.