我正在大学的Oracle9i服务器上工作。
我已授予我的朋友对视图 'v1' 的选择和插入权限。
他可以在视图select
上insert
进行操作,但显然,当他插入一行时,视图会为他的用户 ID 维护一个单独的副本。
IE。当我说:
select * from v1;
我看不到他插入视图'v1'的行。这是默认行为吗?我不应该看到他插入的行,因为它仍然归我所有吗?
我是新手,所以我认为我不了解有关视图和授予权限的一些概念。
如果其他用户实际上插入了符合视图标准的行并且其他用户正在提交他的事务,那么您将能够在会话中看到该行。
SELECT * FROM Pavitar.v1
)例如,如果我创建一个从表中EMP_VIEW
返回所有数据的视图,其中 a 为 10,我可以通过不具有 10 的视图向表中插入一行。EMP
DEPTNO
EMP
DEPTNO
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.