[MSSQL]寫Trigger監視一欄位的數值更新另一欄位的值。

  • 1973
  • 0
  • 2016-04-07

若Count欄位之值大於100則更新State欄位之值為1。

資料表名稱:CountAlarm,資料結構如下,資料表必須要有主鍵(如Idx欄位)。

MSSQL的Trigger創建語法如下:

CREATE trigger [Alarm] on [dbo].[CountAlarm] after update
as
begin

	if (update([Count]))
	Begin
		
		update CountAlarm set [State] = 1 
		where CountAlarm.[Count] > 100
		and CountAlarm.Idx in (select  i.Idx from inserted i join deleted d on i.Idx = d.Idx)

	end
end 

inserted為觸發程序中的「新增」資料表,觸發時有新增的資料都會記錄在此資料表中。

deleted為觸發程序中的「刪除」資料表,觸發時有被刪除的資料都會記錄在此資料表中。

而更新過的資料則會同時紀錄在inserted和deleted兩個資料表中,所以將此兩個表做inner join即可得知更新的資料。

update([Count]) 語法為判斷Count欄位是否有被更新。