2
我有一个具有触发器的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。发生这种情况时,我需要触发器更新批次表上的“TotalCars”属性。我知道有一个“插入”和“删除”表来检测刚刚插入/删除的内容。但是,我无法弄清楚更新的等价物。
如何在SQL Server 2008上执行此操作?谢谢!
如果你用我的解决方案(http://stackoverflow.com/questions/3388283/automatically-setting-a-field-value-in-sql/3388366#3388366)你不必处理所有这些情况。 – Giorgi 2010-08-02 16:57:57