SQL Server 2008如何引诱我们升级?(二)

日期: 2008-10-22 作者:思维牧童 来源:TechTarget中国

  学会使用Merge语句

  在SQL Server 2008中,有一个新的MERGE语句让我有一点点激动。SQL Server开发者在编写修改表的存储过程时,会非常喜欢这个新的T-SQL语法。使用“IF-THEN”来决定一个数据行是否需要被插入、更新或删除的时代已经过去了。MERGE让我们可以一次搞定所有的逻辑和修改。而且,你可以一次就能搞定整个数据集的对比,不用再逐行进行对比。以下是使用MERGE语句的一个例子:

MERGE tbl_address AS current_addresses
USING ( 
SELECT customer_objid = address_label, 
addressline1, addressline2, city, region, country, zip
code, is_deleted 
FROM @addresses)
AS 
source_addresses(address_label, addressline1, 
addressline2, city, region, country, zipcode, 
is_deleted) 
ON 

current_addresses.address_label = source_address 
es.address_label 

WHEN NOT MATCHED THEN 
INSERT (address_label, addressline1, addressline2, 
city, region, country, zipcode) 
VALUES (source_addresses.address_label, 
source_addresses.addressline1, 
source_addresses.addressline2, 
source_addresses.city, source_addresses.region, 
source_addresses.country, source_addresses.zipcode) 
WHEN MATCHED AND source_addresses.is_deleted 
= 1 
THEN DELETE 
WHEN MATCHED THEN 
UPDATE 
SET address_label=source_addresses.address_label, 
addressline1=source_addresses.addressline1, 
addressline2=source_addresses.addressline2, 
city=source_addresses.city, region=source_address 
es.region, country=source_addresses.country,zip 
code=source_addresses.zipcode

  我们简单的对上述例子进行一下点评。USING部分定义了新数据,在这个例子中是一个表变量。ON部分定义了新数据和现有数据之间的联接。最后,它通过一系列的MATCHED语句来进行相应操作,其中包括WHEN NOT MATCHED的时候进行插入操作,WHEN MATCHED的时候执行更新操作,或WHEN MATCHED且符合一些其它条件的时候进行删除操作。这是一个真正让你省心省力的功能,其语法更干净,且符合我们习惯的思维逻辑。

  强大的基于策略管理

  好戏总要压轴,我也把SQL Server 2008中最好的新功能之一放到了最后,它就是基于策略的管理。你是否有过这样的想法,希望通过建立一系列的策略,来控制用户可以对你的SQL Server进行什么操作?现在你能实现你的想法了,你可以使用SQL Server 2008的策略管理功能。

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

相关推荐