RELATEED CONSULTING
相关咨询
选择下列产品马上在线沟通
服务时间:9:30-18:00
你可能遇到了下面的问题
关闭右侧工具栏
避免更改引起的大量改动
  • 作者:xiaoxiao
  • 发表时间:2020-12-23 10:55
  • 来源:未知

因为所有的操作最终都作用在基表上,因此基表名和列名的变化会对这些语句产生影响,此时必须修改所有的语句,这样不但麻烦,有时甚至会发生错误。另外,有的甚至表名和列名复杂而晦涩,用起来极不方便。怎样才能解决这个问题呢?避免直接依赖于基表的问题,方法有:

●使用视图为表名和列名起别名,在应用过程中可以借助视图中的名字来代替基表名和列名,当表名和列名改变时,只需改变相应视图的定义即可。

●类似于视图定义,只不过提供了一种更直接更广泛的方法来为各种对象定义别名,其中也包括视图对象。

●在程序中用定义光标的方法防止直接依赖于表。当表名改变时,只需改变光标定义即可。

一、使用视图(略)

二、使用同义名

1、简介

和使用视图来实现操作不直接依赖于基表一样,同义名也能实现这一目的。与视图不同的是同义名不但可以应用在表的命名中,同样也可以应用在视图、序列、存储过程和函数以及包中,因此它的应用范围更广泛。用同义名的不便之处是它不能对列起别名,这一点不如视图。

创建同义名的语法如下所示:

create [public]synonym 同义名 for 对象;

其中:

●public:公共同义名,所有用户都可以引用,若省略此关键字不写,则默认是private同义名,即私有同义名,它只能为某一用户使用。

●同义名:为对象起的别名,在以后使用对象时可以用此名来代替原对象名。

●对象:某一特定对象名,它可以是基表、视图、序列、过程、存储函数、存储包和其它同义名,指定对象时可以指定所属用户,中间用“.”分开。

2、具体操作

●创建私有同义名

【例】为persons表起同义名为person。

sql>create synonym person for persons;

此外用的是默认private同义名,只能为当前用户使用。若要指定其为另一用户使用,比如用户jxl,则可用以下语句创建。

sql>create synonym person fro jxl.persons;

●创建公共同义名

也可以创建公共同义名给所有用户使用

【例】

sql>create public synonym person fro persons;

●使用同义名

创建了同义名之后,就可以在其他地方引用它,以此来代替基表的引用。如下所示:

sql>insert into person values(98036,'Skert','W',to_date('25-OCT-71'));

在以后使用过程中,若基表的名字变了,只需修改同义名的定义即可。但同义名创建不支持replace命令,因此必须将其删除再重新创建。删除命令如下: