不愿长大,好多人如此,其实这是一种逃避责任没有担当的表象。

同义词

从字面上理解就是别名的意思,和视图的功能类似,就是一张映射关系。

私有同义词:一般是普通用户自己建立的同义词,创建者需要create synonym权限

  grant create synonym to scott;

  create synonym abc for emp;

公有同义词:一般是由DBA创建,所有用户可以使用,创建者需要create public synonym权限

  create public synonym to scott;

  create public synonym xyz for emp;

  drop public synonym xyz;

1.简单同义词实现

在sysdba中先解锁HR,等会儿要用:

43.oracle同义词-LMLPHP

43.oracle同义词-LMLPHP

1.1 私有同义词

先给scott分配创建私有同义词的权限:

43.oracle同义词-LMLPHP

创建私有同义词

43.oracle同义词-LMLPHP

使用同义词sym_emp:

43.oracle同义词-LMLPHP

发生上述错误(同义词失效)的原因是emp表根本不存在,因为我还在sys(dba)下,而不是sott下,sys下并没有emp这张表。我刚才在sys下创建sym_emp这个同义词并没有报错,可见在创建同义词的时候oracle并不会去检查表是否存在。。。

切换到scott下重新建同义词,再试一下同义词使用效果:

43.oracle同义词-LMLPHP

可见和直接查询emp的结果是一样的

1.2 公有同义词

切换到sysdba,给scott分配创建公有同义词的权限:

43.oracle同义词-LMLPHP

再回到scott下创建公有同义词:

43.oracle同义词-LMLPHP

分配select权限给hr:

43.oracle同义词-LMLPHP

到hr下使用刚才创建的同义词:

43.oracle同义词-LMLPHP

05-11 18:09