当前位置: > 数据库 > Oracle >

同义词synonym

时间:2015-02-01 22:02来源:linux.it.net.cn 作者:IT

设置权限的时候 有用
a)建立一个新的用户mk  密码m123;
  connect system/manager;
  create user mk identified by m123;
  grant connect,resource to mk;
b)登录到用户mk 建立一张表
  connect mk/m123;
  create table test(
    xh number(2) primary key,
    cname varchar2(10) not null);
  insert into test values (10,'Mike');
  commit;
c)希望在scott用户下能看到mk用户中test表的数据???
  connect mk/m123
  grant select on test to scott; //授权scott能select
  connect scott/tiger
  select * from mk.test;

  create synonym mtest for mk.test; //为表建立的
                       //可以为任何对象建立同义词
  select * from mtest; //相当于select * from mk.test;
 
同义词 增强数据库的安全性
   connect mk/m123
   create sequence seq1;
   grant select on seq1 to scott;

   connect scott/tiger
   select mk.seq1.nextval from dual;

   为序列建立一个同义词
   create synonym seqa for mk.seq1;
   select seqa.nextval from dual;

a)某个用户所拥有的同义词都称为私有的同义词,
别的用户是不能使用它的
b)所有用户都能使用的同义词称为公有的同义词public
只能定义在超级用户下
 connect system/manager
 create public synonym ptest for mk.test;
 connect mk/m123
  select * from ptest;
   //同义词只是个名字,到底能否查到数据取决于是否有权限
 
  取一个别名semp 相当于 scott.emp
  简化名字,隐藏表的所有者
  增强安全性
 
  connect mk/m123;
 
  create synonym semp for scott.emp;

  select * from semp;
     --是否能查到数据
     --取决于是否有权限查询

(责任编辑:IT)
------分隔线----------------------------