2012-02-29 14 views
0

IDを保持する物理テーブルと、挿入された、削除された、更新されたデータの時刻が であり、トリガーが(挿入、更新、削除後)ベーステーブルに追加されています。そのトラッキングの一種。更新されたデータの挿入と削除

挿入されたレコードと削除されたレコードは問題ありませんが、更新されたレコードのベーステーブルにレコードがありません。 レコードが挿入され、削除されています。

ここに何か不足している場合は助けてください。挿入および更新操作のための

トリガー:削除操作のための

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

+1

トリガーのスクリプトを提供した場合は、お手伝いできます。 –

+0

出力付きのトリガーとクエリのコードを提供しました –

答えて

0

正しく削除を検出しませんCASE式を更新取得します。代わりにこれを試してください。

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

私は、物事を明確にし、更新されたものを識別するためにケース表現を使用しましたが、挿入されたものと削除されたものの両方を結合する(更新されたレコード)。 –

+0

IDがtrArticleAttachmentTrackDeleteに存在する場合:(それが削除されました。それはArticleAttachmentテーブルに存在しません。UPDATEの –

+0

だと思うのDELETE/INSERTの組み合わせとして、 –

関連する問題