1.同义词概述
同义词概述
同义词(SYNONYM)是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同
义词访问关联的数据库对象,支持的数据库对象包括:表、视图、函数和存储过程。
若指定模式名称,则同义词在指定模式中创建。否则,在当前模式创建
使用同义词时,用户需要具有对关联对象的相应权限,包括:
SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL
2.同义词管理包含如下内容
(1)创建表的同义词
(2)创建视图的同义词
(3)创建函数的存储过程并调用
(4)创建存储过程的同义词并调用
(5)删除同义词
3.同义词演示如下
-- 创建表的同义词
sjzt=> create synonym syn_t1 for t1;
CREATE SYNONYM
-- 创建视图的同义词
sjzt=> create synonym syn_v1 for v_1;
CREATE SYNONYM
sjzt=> select * from syn_v1;
id | ename | sal | empno | deptno
----+-------+------+-------+--------
1 | xsq1 | 2000 | 6379 | 10
(1 row)
-- 创建函数同义词
sjzt=> \df
List of functions
Schema | Name | Result data type | Argument data types | Type | fencedmode | propackage | prokind
--------+-----------------------+------------------+---------------------+--------+------------+------------+---------
sjzt | package_func_overload | integer | col integer | normal | f | t | f
(1 row)
--创建函数的存储过程并调用
sjzt=> create synonym syn_f_pfo for package_func_overload;
CREATE SYNONYM
sjzt=> select package_func_overload(1);
one int parameters 122
package_func_overload
-----------------------
0
(1 row)
--创建存储过程的同义词并调用
sjzt=> create synonym syn_proc_emp for my_proc;
CREATE SYNONYM
sjzt=> call syn_proc_emp();
inner emp_id =7799
outer_var =6688
outer emp_id =7788
syn_proc_emp
--------------
(1 row)
--删除同义词
sjzt=> drop synonym syn_proc_emp;
DROP SYNONYM
4.总结
同义词是非常有用的,使用访问同义词的用户需要有关联对象的 SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL 这些权限。同义词能够屏蔽具体的对象,而开放一个不真实的名称进行对外访问,提高了安全性。