2012-02-29 65 views
0

我有物理表持有標識,以及插入,刪除,更新數據的時間 並有我的觸發器附加(插入,更新和刪除後)與基表。它是一種跟蹤。從插入和刪除獲取更新的數據

插入的記錄和刪除的記錄都很好,但問題是我沒有在基表中獲取更新記錄的任何記錄! 記錄在插入和刪除兩個。

如果我在這裏缺少任何東西,請幫助我。

觸發插入和更新操作:

CREATE TRIGGER [dbo].[trArticleAttachmentTrack] 
    ON [dbo].[ArticleAttachment] 
    AFTER INSERT, UPDATE 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    SET NOCOUNT ON; 

    INSERT INTO TrackArticleAttachmentTbl (ArticleAttachmentID, ActionOn) 
    SELECT i.ArticleAttachmentID, GETDATE() FROM inserted i 

END 

GO 

觸發了刪除操作:

CREATE TRIGGER [dbo].[trArticleAttachmentTrackDelete] 
    ON [dbo].[ArticleAttachment] 
    AFTER DELETE 
AS 
BEGIN 
    -- SET NOCOUNT ON added to prevent extra result sets from 
    SET NOCOUNT ON; 

    INSERT INTO TrackArticleAttachmentTblRowDel (ArticleAttachmentID, ActionOn) 
    SELECT i.ArticleAttachmentID, GETDATE() FROM deleted i 

END 

GO 

查詢來獲取輸出

SELECT 
    CASE WHEN i.ArticleAttachmentID IS NULL THEN 'This is a delete' 
     WHEN d.ArticleAttachmentID IS NULL THEN 'This is an insert' 
             ELSE 'This is an update' 
    END as Action, 
    * 
FROM 
    TrackArticleAttachmentTbl i 
FULL OUTER JOIN 
    TrackArticleAttachmentTblRowDel d 
    ON i.ArticleAttachmentID = d.ArticleAttachmentID 

OUTPUT:

This is an update 38 18226 2012-02-19 14:01:52 5 18226 2012-02-19 14:02:01 
This is an update 22 18210 2012-02-15 16:38:39 4 18210 2012-02-15 16:39:29 
This is an update 13 18201 2012-02-15 12:21:22 2 18201 2012-02-15 12:21:32 
This is an update 47 18235 2012-02-19 16:37:54 6 18235 2012-02-19 17:09:53 

查詢來獲取更新的記錄

SELECT * 
FROM dbo.ArticleAttachment 
WHERE ArticleAttachmentID IN (18226,18210,18201,18235) 

沒有結果這個:(

+2

我們如何在沒有看到您的代碼的情況下爲您提供幫助?請發佈您的觸發代碼。 – sisdog 2012-02-29 07:08:20

+1

如果您提供了觸發器的腳本,我們可以幫助您。 – 2012-02-29 07:08:44

+0

我已經提供了觸發器和查詢輸出的代碼 – 2012-02-29 07:46:14

回答

0

CASE表達式無法正確檢測刪除。試試這個。

CASE WHEN d.ArticleAttachmentID IS NOT NULL 
     THEN 'This is a delete' 
     ELSE 'This is an insert or update' 
    END 
+0

我用case表達只是爲了澄清事物並確定更新,但是(更新的記錄)加入插入和刪除,它們不在基表中。 :( – 2012-02-29 08:32:28

+0

如果trArticleAttachmentTrackDelete中存在一個ID,那麼它將被刪除。它不會存在於ArticleAttachment表中。 – 2012-02-29 08:42:50

+0

將UPDATE視爲DELETE/INSERT組合 – 2012-02-29 09:00:10

相關問題