外部数据库对象的同义词
可以为您的会话当前连接的数据库服务器上任意数据库中的任意表或视图创建同义词。
此示例为当前数据库外的表在当前数据库服务器的 payables 数据库中声明同义词。
CREATE SYNONYM mysum FOR payables:jean.summary;
您也可以为 CREATE EXTERNAL TABLE 注册在当前数据库中的外部表创建同义词。(外部表要 注册在创建它的数据库的系统目录中,而非存储它的任意数据库。)
您也可以为存在于某个数据库服务器的数据库中的表或视图创建同义词,该数据库服务器不是您的 当前数据库服务器。当创建同义词时,这两个数据库服务器必须都处于联机状态。在网络中,远程 数据库服务器验证该同义词引用的表或视图在创建同义词时是否存在。下一示例为由远程数据库服 务器支持的表创建同义词:
CREATE SYNONYM mysum FOR payables@phoenix:jean.summary;
现在,标识符 mysum 引用表 jean.summary ,该表位于 phoenix 数据库服务器上的 payables 数据库中。如果从 payables 数据库删除了 summary 表,则 mysum 同义词保持不动。随后尝试 使用 mysum 会返回错误:Table not found 。
然而, GBase 8s 并不支持这些外部对象的同义词:
⚫ 类型表(包括作为表层次结构一部分的任何表)
⚫ 包含任意扩展数据库类型的表或视图
⚫ 本地数据库外的序列对象
PUBLIC 和 PRIVATE 同义词
如果使用 PUBLIC 关键字(或不使用任何关键字),则所有可以访问数据库的人都可以使用您的 同义词。如果数据库不兼容 ANSI ,则用户不必知道公共同义词的所有者名称。位于不兼容 ANSI GBase 8s 数据库服务器内创建的数据库中的任意同义词都是公共同义词。
在兼容 ANSI 的数据库中,所有的同义词都是专用的。如果使用 PUBLIC 或 PRIVATE 关键字, 则数据库服务器发出语法错误。
如果使用 PRIVATE 关键字在不兼容 ANSI 的数据库中声明同义词,则非限定的同义词可由其所
有者使用。其他用户必须用所有者的名称限定同义词。




