目录
在GasussDB数据库中,Synonym是一种灵活且强大的工具,用于简化数据库对象的访问和管理。通过Synonym,用户可以创建具有特定名称的别名,以替代复杂的数据库对象名称,从而提高查询效率、方便维护、增强安全性,并扩展数据库的使用范围。
同义词(Synonym)是数据库中的一个对象,它是一个别名,经常用于简化对象访问和提高对象访问的安全性。在GaussDB数据库中,管理员可以为大部分对象,如表、视图、序列、存储过程、包等等,定义同义词。
1)创建一个同义词对象。同义词是数据库对象的别名,用于记录与其他数据库对象名间的映射关系,用户可以使用同义词访问关联的数据库对象。
ALTER SYNONYM synonym_name OWNER TO new_owner;
参数说明:
总之,Synonym在GasussDB数据库中可以提高数据库对象的访问效率和安全性,扩展数据库的使用范围,方便用户对数据库的访问和管理。
GaussDB支持通过同义词访问的数据库对象包括表、视图、函数和存储过程。支持的DML语句包括SELECT、INSERT、UPDATE、DELETE、EXPLAIN、CALL。
--创建表omm2.test1
CREATE TABLE omm2.test1
(
id int
,name varchar2(10)
);
--创建表的同义词t1
CREATE OR REPLACE SYNONYM t1 FOR omm2.test1;
--使用同义词t1。
INSERT INTO t1 VALUES (1, 'zhangsan'), (2, 'lisi');
UPDATE t1 SET t1.name = 'ZhangSan' WHERE t1.id = 1;
UPDATE t1 SET t1.name = 'LiSi' WHERE t1.id = 2;
SELECT * FROM t1;
执行过程如下:
--创建视图
CREATE VIEW omm2.v_test1 AS SELECT * FROM omm2.test1;
--创建同义词v1
CREATE SYNONYM v1 FOR omm2.v_test1;
--使用同义词v1。
SELECT * FROM v1;
执行过程如下:
--创建函数根据姓名(参数)获取信息
CREATE OR REPLACE FUNCTION f_test1 (c_name VARCHAR)
RETURNS VOID PACKAGE
LANGUAGE plpgsql
AS $$
DECLARE
s_sql TEXT;
BEGIN
s_sql := 'CREATE OR REPLACE VIEW omm2.v_test2 AS SELECT * FROM omm2.test1 where name=''' || c_name || '''' ;
EXECUTE s_sql;
END $$;
--创建同义词
CREATE OR REPLACE SYNONYM omm2.f1 FOR f_test1;
--调用
CALL omm2.f1('ZhangSan');
--查看执行结果
select * from omm2.v_test2;
执行过程如下:
--创建存储过程
CREATE OR REPLACE PROCEDURE p_test1(a integer,b varchar2(10))
SECURITY INVOKER
AS
BEGIN
INSERT INTO omm2.test1 VALUES(a,b);
END;
/
--创建同义词
CREATE OR REPLACE SYNONYM omm2.p1 FOR omm2.p_test1;
--使用同义词p1,调用存储过程。
CALL omm2.p1(3,'WangWu');
SELECT * FROM omm2.test1;
执行过程如下:
FAQ解决思路:
GaussDB的同义词是一种数据库对象,用于为其他数据库对象提供别名。同义词可以简化SQL查询语句,提高可读性和可维护性。同时,同义词还可以实现数据的逻辑隔离和访问控制,提高数据库的安全性。
在GaussDB中,可以使用CREATE SYNONYM语句创建同义词。同义词的定义与被它所引用的对象具有相同的模式(schema)。如果同义词的模式与被引用对象的模式不同,则需要在同义词名称后面加上模式名称进行限定。
需要注意的是,同义词并不实际存储数据,它只是对其他数据库对象的引用。因此,删除同义词并不会删除被引用的对象。同时,同义词也不能跨数据库或实例使用。
更多信息可参考官方文档:
https://support.huaweicloud.com/centralized-devg-v2-gaussdb/devg_03_0574.html
——结束