愤怒的大鸟 发表于 2015-1-16 22:17:53

MSSQL教程之解读SQL Server2008的新语句MERGE

BlackHole黑洞引擎,写入的任何数据都会消失,一般用于记录binlog做复制的中继SQLServer2008将包括用于兼并两个行集(rowset)数据的新句法。依据一个源数据表对另外一个数据表举行断定性的拔出、更新和删除如许庞大的操纵,使用新的MERGE语句,开辟者用一条命令就能够完成。
对两个表举行信息同步时,有三步操纵要举行。起首要处置任何必要拔出方针数据表的新行。其次是处置必要更新的已存在的行。最初要删除不再利用的旧行。这个过程当中必要保护大批反复的逻辑,并大概招致奇妙的毛病。
BobBeauchemin会商了MERGE语句,这个语句将上述的多个操纵步骤兼并成单一语句。他给出了以下的例子:
以下为援用的内容:
merget
usingsont.id=s.id
whenmatchedthenupdatet.name=s.name,t.age=s.age--use"rowset1"
whennotmatchedtheninsertvalues(id,name,age)--use"rowset2"
whensourcenotmatchedthendelete;--use"rowset3"
如你所见,详细操纵是依据前面的团结(join)的剖析了局来断定的。在这个例子中,假如方针和源数据表有婚配的行,就实施更新操纵。假如没有,就实施拔出大概删除操纵来使方针数据表和源数据表坚持分歧。
这个新句法的一个美好的地方是它在处置更新时切实其实定性。在利用尺度的UPDATE句法和团结时,大概有凌驾一个源行跟方针行婚配。在这类情形下,没法意料更新操纵会接纳哪一个源行的数据。
而当利用MERGE句法时,假如存在多处婚配,它会抛出一个毛病。这就提示了开辟者,要到达料想的方针,以后的团结前提还不敷明白。
本文搜集收拾自互联网,若您是原文作者,请来信变动作者及出处Post#chinaz.com(把#改成@)

这里我们讨论用binlog来实现闪回的方案。

老尸 发表于 2015-1-19 06:52:16

而SQLServer如果能像Oracle一样可以为登陆分配如:5%的cpu,10%的内存。就可以解决这个漏洞。

精灵巫婆 发表于 2015-1-28 05:27:00

另一个是把SQL语句写到服务器端,就是所谓的SP(存储过程);

小女巫 发表于 2015-2-5 17:11:46

groupby子句可以将查询结果分组,并返回行的汇总信息Oracle按照groupby子句中指定的表达式的值分组查询结果。

谁可相欹 发表于 2015-2-13 03:16:45

我是一个ERP初学者,对于前台运用基本熟悉,但对于后台SQLServer的运用一点也不懂,特想学习下相关资料。至少懂得一些基本的运用。希望各位能给于建议,小弟再谢过!

再现理想 发表于 2015-3-3 13:25:48

从底层原理到表层引用,书籍多的很。个人认为没有什么那本书好?这样的说法。主要看和个人的学习方法是否适合。

柔情似水 发表于 2015-3-11 11:26:38

比如日志传送、比如集群。。。

不帅 发表于 2015-3-18 14:44:55

Mirror可以算是SQLServer的Dataguard了。但是能不能被大伙用起来就不知道了。

飘灵儿 发表于 2015-3-26 06:21:26

你觉得我的非分区索引无法对起子分区,你可以提醒我一下呀!没有任何的提醒,直接就变成了非分区表。不知道这算不算一个bug。大家也可以试试。
页: [1]
查看完整版本: MSSQL教程之解读SQL Server2008的新语句MERGE