SQLServer中同义词Synonym的用法
对于insert和delete,event中包含了插入/删除的记录的所有字段的值(太爽了。。)之前一向以为SqlServer中的同义词(Synonym)没有甚么用途,以是也一向没有往查它的语法格局。明天碰着一个成绩,用Synonym来办理再好不外了。成绩是如许子的,我的体系顶用到了多个数据库,然后由于各个数据库中的某些数据必要同步,以是我就在个中的某个数据库中的表中增加触发器,来同步更新别的数据库中的数据。举比方下:有两个数据库A和B,分离有表a1与b1,然后我在表a1创立了触发器来更新表b1中的数据,触发器也许以下:
createtriggertu_a1afterupdate
as
……
updatet2sett2.字段=t1.字段
frominsertedt1,B..b1t2wheret1.字段=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语句示例,注重,同义词不供应修正的功效,以是一旦创立了,就只能删除再重修,是不克不及够修正的。
创立同义词
createsynonymBb1
fromB..b1
利用同义词
insertintoBbl(……)values(……)
援用同义词
select*fromBbl
删除同义词
dropsynonymBb1
查询一切同义词
select*fromsys.synonyms
注重:只要SqlServer2005及今后的版本中才有Synonym。在ORDERBY操作中,MySQL只有在排序条件不是一个查询条件表达式的情况下才使用索引。(虽然如此,在涉及多个数据表查询里,即使有索引可用,那些索引在加快ORDERBY方面也没什么作用)。
SQLServer中同义词Synonym的用法
原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜! 对递归类的树遍历很有帮助。个人感觉这个真是太棒了!阅读清晰,非常有时代感。 相信各位对数据库和怎么样学习数据库都有一些经验和看法,也会有人走了一些弯路总结出自己的经验来,希望大家能把各自的看法和经验拿出来分享,给别人一份帮助,给自己一份快乐 换言之,只有在不断的失败中尝试成功,而关于失败的总结却是很少的 SQL语言是学习所有数据库产品的基础,无论你是做数据库管理还是做数据库开发都是这样。不过具体学习的侧重点要看你将来做哪一块,如果是做数据库管理(DBA),侧重点应该放在SQLServer的系统管理上. 在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。 习惯敲命令行的朋友可能会爽一些。但是功能有限。适合机器跑不动SQLServerManagementStudio的朋友使用。 我个人认为就是孜孜不懈的学习 可能有的朋友会抱怨集成的orderby,其实如果使用ranking函数,Orderby是少不了的。如果担心Orderby会影响效率,可以为orderby的字段建立聚集索引,查询计划会忽略orderby操作(因为本来就是排序的嘛)。
页:
[1]