带有授予选择/插入权限的视图

时间:2011-05-12 13:17:00

标签: views oracle9i grant

我正在大学学习 Oracle9i 服务器。

我已授予我的朋友选择和插入视图的权限 'v1'

他可以在视图上selectinsert,但显然视图在插入行时会为其用户ID维护一个单独的副本。

即。当我说:

select * from v1;

我无法看到他插入视频'v1'的行。这是默认行为吗?我不应该看到他插入的行,因为它仍然拥有由我?

我是新手,所以我想我不了解有关视图和授予权限的一些概念。

1 个答案:

答案 0 :(得分:1)

如果其他用户实际插入的行符合视图标准而另一个用户正在提交其事务,那么您将能够在会话中看到该行。

  • 您确定其他用户实际上使用的是同一个对象吗?他或她所指的V1是否有可能与您所指的V1不同?您是否都使用完全限定的对象名称(即SELECT * FROM Pavitar.v1
  • 您确定其他用户在执行INSERT后实际提交了他的事务吗?
  • 您确定要插入的行符合视图的条件吗?

例如,如果我创建一个视图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.
相关问题