最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

SQLServer 2008 Merge語句的OUTPUT功能

 更新時間:2009年07月13日 21:38:49   作者:  
SQL Server 2005中的Output功能可以把Insert,Update和Delete的內(nèi)容都返回,2008中的Output同樣具有此功能
下面介紹一下把Output同2008的新T-SQL語句Merge組合使用的方法:
新建下面表:
復制代碼 代碼如下:

CREATE TABLE Book(
ISBN varchar(20) PRIMARY KEY,
Price decimal,
Shelf int)

CREATE TABLE WeeklyChange(
ISBN varchar(20) PRIMARY KEY,
Price decimal,
Shelf int)

CREATE TABLE BookHistory(
Action nvarchar(10),
NewISBN varchar(20),
NewPrice decimal,
NewShelf int,
OldISBN varchar(20),
OldPrice decimal,
OldShelf int,
ArchivedAt datetime2)

SQL語句為
復制代碼 代碼如下:

MERGE Book AS B
USING WeeklyChange AS WC
ON B.ISBN = WC.ISBN
WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN
UPDATE SET B.Price = WC.Price, B.Shelf = WC.Shelf
WHEN NOT MATCHED THEN
INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf)
OUTPUT $action, inserted.*, deleted.*, SYSDATETIME()
INTO BookHistory;

結果集為:

SELECT * FROM BookHistory
GO

Action NewISBN NewPrice NewShelf OldISBN OldPrice OldShelf ArchivedAt
------ ------- -------- -------- ------- -------- -------- ---------------------------
UPDATE A 101 1 A 100 1 2007-11-25 14:47:23.9907552
INSERT C 300 3 NULL NULL NULL 2007-11-25 14:47:23.9907552

這里有Insert和Update兩種Output情況。如果只需要其中一種,可以用下面這種方法過濾:
復制代碼 代碼如下:

INSERT INTO Book(ISBN, Price, Shelf, ArchivedAt)
SELECT ISBN, Price, Shelf, GETDATE() FROM
(MERGE Book AS B
USING WeeklyChange AS WC
ON B.ISBN = WC.ISBN AND B.ArchivedAt IS NULL
WHEN MATCHED AND (B.Price <> WC.Price OR B.Shelf <> WC.Shelf) THEN
UPDATE SET Price = WC.Price, Shelf = WC.Shelf
WHEN NOT MATCHED THEN
INSERT VALUES(WC.ISBN, WC.Price, WC.Shelf, NULL)
OUTPUT $action, WC.ISBN, Deleted.Price, Deleted.Shelf
) CHANGES(Action, ISBN, Price, Shelf)
WHERE Action = 'UPDATE';

相關文章

最新評論

新竹县| 科技| 巴林右旗| 三河市| 二连浩特市| 泸水县| 龙泉市| 玉田县| 巴彦淖尔市| 华容县| 南乐县| 微山县| 措美县| 从化市| 仙桃市| 垫江县| 宝兴县| 东台市| 新宾| 体育| 平遥县| 富裕县| 蒙城县| 新河县| 筠连县| 太和县| 泉州市| 小金县| 河北省| 淄博市| 酉阳| 自贡市| 德格县| 轮台县| 永川市| 泸水县| 临城县| 延庆县| 商丘市| 花垣县| 乌拉特中旗|