以前一直认为SqlServer中的同义词(Synonym)没有什么用处,所以也一直没有去查它的语法格式。今天碰到一个问题,用Synonym来解决再好不过了。问题是这样子的,我的系统中用到了多个数据库,然后因为各个数据库中的某些数据需要同步,所以我就在其中的某个数据库中的表中添加触发器,来同步更新其它数据库中的数据。举例如下:
有两个数据库A和B,分别有表a1与b1,然后我在表a1创建了触发器来更新表b1中的数据,触发器大概如下:

create trigger tu_a1 after update
as
……
update t2 set t2.字段=t1.字段
from inserted t1,B..b1 t2 where t1.字段=t2.字段

反正就是,我在a1的触发器中用到了B..这种方式来引用数据库B中的对象。

然后问题就来了,今天老板说在同一台服务器上要同时安装多个系统。那么就需要把数据库A和数据库B复制多份,当然复制出来的数据库名字就不能叫A和B了,可能叫A1与B1。那么A1中的触发器就不能更新B1中的数据了,因为A1中的触发器是使用B..这种方式来引用的。这种情况下,必须将全部的B..全部换成B1..。这样,如果这样引用的地方多了,那就是一场灾难了。

使用同义词Synonym就能很好的解决这个问题,首先大概说一下同义词(Synonym)的作用。
同义词:就是定义一个字符串名称,用来代替一个有意义的引用对象。

在上例中,我可以用Bb1这个字符串来代代B..b1,那么以后我要操作B..b1这表,就可以直接操作Bb1,与操作前者一样的效果。那么,在部署多套系统时,只需修改一下新数据库中这个同义词的引用就可以了,触发器根本不需要修改。

下面是“创建,删除,引用”同义词的sql语句示例,注意,同义词不提供修改的功能,所以一旦创建了,就只能删除再重建,是不能够修改的。

创建同义词
create synonym Bb1
from B..b1

使用同义词
insert into Bbl(……) values (……)

引用同义词
select * from Bbl

删除同义词
drop synonym Bb1

查询所有同义词
select * from sys.synonyms

注意:只有SqlServer2005及以后的版本中才有Synonym。ong>。

最新文章

  1. jq插件制作(力推)
  2. phpcms
  3. php常见问题
  4. 【C语言入门教程】4.2 二维数组
  5. hdu 1536/1944 / POJ 2960 / ZOJ 3084 S-Nim 博弈论
  6. 如何搭建MVC3与配置models层
  7. Java与C#间json日期格式互转完美解决方案
  8. POJ 1840 Brainman(逆序对数)
  9. nginx的反向代理和负载均衡的区别是什么 - 开源中国社区
  10. 驱动07.USB驱动程序
  11. HDU 3861 The King’s Problem(tarjan连通图与二分图最小路径覆盖)
  12. JS中的DOM对象及JS对document对像的操作
  13. set 利用lower_bound实现key索引
  14. Spring webflux
  15. Azure CosmosDB (8) 性能指标Request Unit-RU
  16. requirements文件
  17. MySQL Execution Plan--IN查询计划(2)
  18. linux svnserver的安装使用备用
  19. NS2安装过程中环境变量设置的问题(ns-2.35)
  20. HDU 1019 Least Common Multiple 数学题解

热门文章

  1. 剑指offer_面试题_从上往下打印二叉树
  2. 【LeetCode-面试算法经典-Java实现】【058-Length of Last Word (最后一个单词的长度)】
  3. bzoj3295: [Cqoi2011]动态逆序对(cdq分治+树状数组)
  4. SVG 贝塞尔曲线控制【方便设置】:贝塞尔曲线
  5. hdoj--2094--产生冠军(集合函数)
  6. vue 组件之间的传值
  7. vue2 filter过滤器的使用
  8. NOIp模拟赛三十四(yxq供题)
  9. JQ 添加节点和插入节点的方法总结
  10. [USACO4.1]篱笆回路Fence Loops