1
我有兩個表叫它Table_A和Table_B。我想創建一個觸發器,使得每當表-A的payment
字段更新的新紀錄應該插入表-B顯示之前支付的價款和總支付量之差了。這兩個表都低於:更新觸發器SQL Server
表-A
A_id | payment |
1 | 1000 |
2 | 200 |
表-B
B_id | difference |
我觸發的執行如下。我不確定如何計算這個差異:
CREATE TRIGGER trigger_Difference
ON Table_A
FOR UPDATE
AS
BEGIN
DECLARE @Difference as INT
DECLARE @PreviousDiff as INT
BEGIN
SELECT @PreviousDiff = SUM(payment)
FROM Table_A
END
if update(payment)
BEGIN
SELECT @Difference = ***don't know what to put here***
FROM inserted
INSERT INTO Table_B (difference) VALUES (@Difference)
END
END
提示:*在添加此付款之前的總付款金額*與*添加此付款金額之間的差額等於恰好一次付款,即最近一次付款。 – 2014-10-26 17:35:05
你的觸發器有** MAJOR **缺陷,你似乎認爲它會被稱爲每行**一次** - 這是**不是**的情況。觸發器將在每個語句**中觸發一次**,所以如果你的UPDATE語句影響了25行,你將觸發**觸發**一次,但是,然後「插入」和「刪除」將分別包含25行。您的代碼在這25行中選擇哪一個:SELECT @Difference = .... FROM插入 - 它是非確定性的。你需要重寫你的觸發器來考慮這個問題! – 2014-10-26 17:44:16