學會使用Merge語句
在SQL Server 中有一個新的MERGE語句讓我有一點點激動SQL Server開發者在編寫修改表的存儲過程時會非常喜歡這個新的TSQL語法使用IFTHEN來決定一個數據行是否需要被插入更新或刪除的時代已經過去了MERGE讓我們可以一次搞定所有的邏輯和修改而且你可以一次就能搞定整個數據集的對比不用再逐行進行對比以下是使用MERGE語句的一個例子
MERGE tbl_address AS current_addresses
USING (
SELECT customer_objid = address_label
addressline
addressline
city
region
country
zip
code
is_deleted
FROM @addresses)
AS
source_addresses(address_label
addressline
addressline
city
region
country
zipcode
is_deleted)
ON
(
current_addresses
address_label = source_address
es
address_label
)
WHEN NOT MATCHED THEN
INSERT (address_label
addressline
addressline
city
region
country
zipcode)
VALUES (source_addresses
address_label
source_addresses
addressline
source_addresses
addressline
source_addresses
city
source_addresses
region
source_addresses
country
source_addresses
zipcode)
WHEN MATCHED AND source_addresses
is_deleted
=
THEN DELETE
WHEN MATCHED THEN
UPDATE
SET address_label=source_addresses
address_label
addressline
=source_addresses
addressline
addressline
=source_addresses
addressline
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 中最好的新功能之一放到了最後它就是基於策略的管理你是否有過這樣的想法希望通過建立一系列的策略來控制用戶可以對你的SQL Server進行什麼操作?現在你能實現你的想法了你可以使用SQL Server 的策略管理功能
[] [] []
From:http://tw.wingwit.com/Article/program/SQL/201311/16152.html