日期:2014-05-17  浏览次数:20535 次

请教大家一个解决方案
在一套系统中有多个数据库,
比如有A,B两个数据库,然后A数据库中的某个触发器要更新B数据库中的某个表。

然后我就在A数据库中这样写
update t1 set t1.字段=值
where B..表 t1,inserted t2
where t1.字段=t2.字段
也就是我在A数据库中使用B..方式来访问B数据库中的表。

然后问题来了,现在老板要求在一台服务器上面装多套系统。
这时候A和B数据库就要同时复制多个,复制出来的可能就是A1,B1等名字,但A1中的触发器还是更新到B数据库中数据,因为我需要同时去修改A1中的触发器,将B..修改成B1..。。

请问大家有没有什么好的方法,可以实现在复制多个数据库的时候不用再修改触发器呢?

------解决方案--------------------
可以用同义词(synonym)或视图(view),
将B..表t1封装为一个同义词或视图,之后在触发器中直接用这个同义词代替B..表t1.

部署多套系统时,只需修改一下新数据库中这个同义词的指向即可.
触发器,存储过程等代码无需修改.