У меня есть физические таблицы для хранения идентификаторов, а также время вставленных, удаленных, обновленных данных
и мои триггеры прикреплены (после вставки, обновления и удаления) с базовой таблицей. Это своего рода отслеживание.
Вставленные записи и удаленные записи - это нормально, но проблема в том, что я не получаю никаких записей в базовой таблице для обновленных записей !!
записи, которые вставлены и удалены как.
Помогите мне, если я что-то упустил здесь.
Триггер для операции вставки и обновления:
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
ВЫВОД:
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)
для этого нет результата: (