我有一个具有触发器的SQL Server 2008数据库。此触发器定义如下:
CREATE TRIGGER [dbo].[Trigger_Car_Insert] ON [dbo].[Car] FOR INSERT
AS
UPDATE
[Lot]
SET
[TotalCars]=lotCars.TotalCars
FROM
[Lot] l JOIN (
SELECT
c.[LotID], COUNT(*) as 'TotalCars'
FROM
inserted i JOIN [Car] c ON i.[LotID]=c.[LotID]
WHERE
c.[IsSold]=0
GROUP BY
c.[LotID]
) lotCars ON l.[ID]=lotCars.[LotID]
这适用于插入。但是,当汽车出售时,IsSold标志会更新为true。发生这种情况时,我想要一个触发器来更新Lot表上的“TotalCars”属性。我知道有一个“插入”和“删除”表来检测刚插入/删除的内容。但是,我无法弄清楚更新的等价物。
如何在SQL Server 2008上执行此操作?谢谢!
答案 0 :(得分:3)
更新触发器中没有“更新表”。 update语句之前的值位于“已删除”表中,新值位于“已插入”表中。您可以使用COLUMNS_UPDATED函数检查特定列是否已更新。
以下是一个简单示例:An Introduction to Triggers -- Part II