如果为不是当前数据库中的表或视图创建同义词,且已删除了此表或视图,则同义词保留在注册的 目录中。可以用已删除的表或视图的名称作为同义词为删除的表或视图创建新的同义词,但是该同 义词值指向当前数据库(而非另一个数据库)中的的表或视图。

以此方式,可将表或视图移至新的位置并链接仍然有效的原始的同义词。以此方法最多可以链接 16 个同义词。 

链接同义词以引用已重新定位的表对象对表或视图是可能的,但是对指向序列对象的同义词无效, 因为 CREATE SYNONYM 只能为已注册在当前数据库中的序列定义同义词。

以下步骤为 customer 表将两个同义词链接在一起,该表将最终驻留在 zoo 数据库服务器上。这 里的省略号( . . . )表示 CREATE TABLE 语句不完整:

  1. 在称为 training 的数据库服务器上的 stores_demo 数据库中,发出以下语句: 

CREATE TABLE customer (lname CHAR(15)...); 

  2. 在称为 accntg 的数据库服务器上,发出以下语句:

CREATE SYNONYM cust FOR stores_demo@training:customer; 

  3. 在称为 zoo 的数据库服务器上,发出以下语句:

CREATE TABLE customer (lname CHAR(15)...);

  4. 在称为 training 的数据库服务器上,发出以下语句:

DROP TABLE customer;

CREATE SYNONYM customer FOR stores_demo@zoo:customer; 

accntg 数据库服务器上的同义词 cust 现在指向 zoo 数据库服务器上的 customer 表。 

以下示例显示将两个同义词连接在一起并链接同义词指向的表的示例: 

1. 在称为 training 的数据库服务器上,发出以下语句:

CREATE TABLE customer (lname CHAR(15)...); 

2. 在称为 accntg 的数据库服务器上,发出以下语句:

CREATE SYNONYM cust FOR stores_demo@training:customer; 

3. 在称为 training 的数据库服务器上,发出以下语句:

DROP TABLE customer; 

CREATE TABLE customer (lastname CHAR(20)...);

accntg 数据库服务器上的同义词 cust 现在指向 training 数据库服务器上的 customer 表。