【发布时间】:2012-11-29 08:00:48
【问题描述】:
我有一个如下所示的触发器:
ALTER TRIGGER [dbo].[trSeasonHotelsSupplierOfferUpdate]
ON [dbo].[SeasonHotelsSupplierOffers]
AFTER UPDATE
AS
BEGIN
IF ((SELECT COUNT(*) FROM inserted) = 1 AND (SELECT COUNT(*) FROM deleted) = 1)
BEGIN
INSERT INTO SeasonHotelsSupplierOffersHistory (SeasonHotelSupplierOfferID, ColumnEN, OldValue, NewValue, UpdateDate, UpdatedByID)
SELECT
i.SeasonHotelSupplierOfferID, 'Name', d.Name, i.Name, i.UpdateDate, i.UpdatedByID
FROM
inserted i, deleted d
WHERE
ISNULL(i.Name,'')<>ISNULL(d.Name,'')
END
END
我也需要对插入的数据和删除的数据进行这项工作。这一切都保存到一个名为 SeasonHotelsSupplierOffersHistory 的表中,该表具有以下列:
SeasonHotelSupplierOfferID、ColumnEN、OldValue、NewValue、UpdateDate、UpdateByID
我知道我必须说 After Updated, Delete, Insert`,但仅此而已。
谢谢
【问题讨论】:
-
您是否知道您现有的更新触发器会忽略影响多行的更新语句?
-
我一次只能更新一行,所以没关系
-
是的 marc_s,投反对票非常成熟......至少为你的投反对票带来论据。我的意思是关于主题论点。并不是说您在我的文字中看到了您不喜欢的字母或字体。
标签: sql sql-server triggers