2
我有一張表格,它計算上個月的總扣除額和剩餘扣除額。更新觸發器中的同一張表
並且任何更新剩餘的扣除舊月應該會影響下個月的順序,所以我創建了一個AFTER UPDATE
觸發器,但我注意到觸發器沒有被UPDATE
調用下個月。
檢查觸發代碼
CREATE TRIGGER [dbo].[tgUpdateRemainingBalance]
ON [dbo].[GAT_MONTHLY_DEDUCTION]
AFTER UPDATE
AS
BEGIN
SET NOCOUNT ON;
DECLARE @OldTotalDeduction INT
DECLARE @NewTotalDeduction INT
DECLARE @OldRemainingToNextMonth INT
DECLARE @NewRemainingToNextMonth INT
SELECT @OldRemainingToNextMonth = RemainingToNextMonth,
@OldTotalDeduction = TotalDeduction
FROM DELETED
SELECT @NewRemainingToNextMonth = RemainingToNextMonth,
@NewTotalDeduction = TotalDeduction
FROM INSERTED
DECLARE @EmpNo BIGINT
DECLARE @RegDate DATETIME
SELECT @EmpNo = PersonnelNo, @RegDate = RegDate FROM INSERTED
IF (@OldRemainingToNextMonth <> @NewRemainingToNextMonth) OR (@OldTotalDeduction <> @NewTotalDeduction)
BEGIN
UPDATE GAT_MONTHLY_DEDUCTION
SET TotalDeduction = TotalDeduction - @OldRemainingToNextMonth + @NewRemainingToNextMonth,
Visited = 1
WHERE RegDate = DATEADD(month, 1, @RegDate) AND PersonnelNo = @EmpNo
END
END
我做更新爲具有此觸發,但要求在第一時間應再次調用觸發下一次更新的觸發器在同一個表,但情況並非如此。
知道如何解決它是迫在眉睫的。
感謝
歡迎StackOverflow上:如果您發佈的代碼,XML或數據樣本,請**在文本編輯器中高亮顯示這些行,然後單擊編輯器工具欄上的「代碼示例」按鈕(「{}」),以精確地格式化和語法突出顯示它! – 2012-03-20 09:39:44
你可以給我們一個更好的想法,你想要完成什麼?看起來您希望在已更改的月份之後的所有月份更新TotalDeduction,但觸發器無法在觸發器內觸發。我問,因爲現在編寫的方式只會在下個月更新,即使觸發器被後續更新調用:唯一更改的字段是TotalDeduction和Visited,並且由於RemainingToNextMonth沒有更改,所以後續更新中不會有更改爲訪問國旗。 – Peter 2012-03-20 10:30:00