inserted Table 會儲存 INSERT 和 UPDATE 前的資料、deleted Table 則會儲存 UPDATE 後和 DELETE 的資料。
- 利用表格表示
- 利用圖形表示
- 整合 inserted 和 deleted 並判斷類別(新增、更新或刪除)
SELECT
COALESCE(I.KeyFields,D.KeyFields) AS KeyFields, -- 利用 COALESCE() 來找出 KeyFields
'Kind' = CASE
WHEN D.KeyFields IS NULL THEN '新增' -- 利用 D.KeyFields IS NULL 來判斷是否為新增
WHEN I.KeyFields IS NULL THEN '刪除' -- 利用 I.KeyFields IS NULL 來判斷是否為刪除
WHEN I.KeyFields = D.KeyFields THEN '更新' -- 利用 I.KeyFields = D.KeyFields 來判斷是否為更新
END
FROM
inserted AS I
FULL JOIN -- 利用 FULL JOIN 來連結兩個暫存資料表
deleted AS D ON I.KeyFields AND D.KeyFields
- 利用 EXISTS 來判斷資料是否存在 inserted 和 deleted
-- 新增
IF EXISTS(SELECT 1 FROM inserted) AND NOT EXISTS(SELECT 1 FROM deleted)
-- 更新
IF EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
-- 刪除
IF NOT EXISTS(SELECT 1 FROM inserted) AND EXISTS(SELECT 1 FROM deleted)
- MSDN 參考資料
- 使用 inserted 或 deleted 資料表
- COALESCE()
2 則留言:
Good!....不過,Table表中,是有新欄位"DEELTE"嗎?^^
C.C.L 大,眼光實在是太銳利啦,已修正 ~~
張貼留言