天天看点

oracle 同义词 synonym 创建与删除表

      创建同义表tableB: create synonym tablenameB for 数据库名字.tablenameA

      删除同义表tableB:drop synonym tablenameB

      最近工作遇到这样一个问题,我们本来的数据库在A里面,但是新开的项目想在数据库A下面的一个子用户B里面。A里面存在我们部门用到的所有表,但是新开的项目想在B里面做。我们所有取数都是在A里面进行的,那么B怎么用到A的表呢?

      毫无疑问,我们可以选择A.tablename 的方式访问A里面的表,但是这样可能会很不方便,具体因为什么不方便或者对A有多大影响我还没有感受到,因为我就是一个初出茅庐的菜鸟,在这种情况下,项目里面有经验的小哥哥小姐姐选择同义词synonym这种方式解决问题。

我们在B里面创建同义表的方式

       create synonym tableB for A.tableA  --注意这里是for

这样我们就在数据库B里面创建除了tableB

     可最近我有遇到一个新问题就是业务在tableA 里面提出加其他种类客户号,这样我table_nameB 如果再通过同义词创建,在使用的时候就要用where条件限制一下,那我就在想能不能在创建同义表tableB 是就直接加入限定条件。试了几种办法都没有成功,问题了漂亮小姐姐得到的回答也还是没有解决,说是没有见到过。所有这个遗留的问题只能以后在说了。如果各位看到的会,还请留言告诉我

那么如何删除同义表

drop synonym tableB   --注意这里是有区别与删除表 drop table tablename

ps:在plsql软件的右边有个objects里面有很多的文件夹,其中一项就是synonyms,里面的都是同义词表,你可以选择右击某一个查看它是如何创建的同义词表就清楚了。