那麼,在SQL Server 2012中,我有跟蹤的......嗯,項目容量表...SQL Server 2012的多個觸發
基本上,Storage
表有Capacity
和Filled
列,Filled
列需要在每次Item
表發生任何變化時更新,但不能高於Capacity
值或者低於「0」。我試圖把所有這一切都放在一個觸發器中......我希望我目前有任何意義......這是我試圖做的,我認爲觸發器只有在INSERT發生時纔會激活......
ALTER TRIGGER [dbo].[CapCheck]
ON [dbo].[Item]
AFTER INSERT, DELETE, UPDATE
AS
BEGIN
DECLARE @Amount int
DECLARE @S_ID int
SELECT @Amount = Amount, @S_ID = S_ID
FROM inserted
IF @Amount = NULL
BEGIN
SELECT @Amount = -(Amount), @S_ID = S_ID
FROM deleted
END
DECLARE @Filled int
DECLARE @Capacity int
SELECT @Filled = Filled, @Capacity = Capacity
FROM Storage
WHERE S_ID = @S_ID
SET @Filled = @Filled + @Amount
IF @Capcaity < @Filled OR @Filled < 0
BEGIN
ROLLBACK TRANSACTION
END
ELSE
BEGIN
UPDATE Storage
SET Filled = @Filled
WHERE S_ID = @S_ID
END
END
任何意見非常感謝,你們是最棒的:d
謝謝你的回答,似乎我必須重新考慮這個問題...... –