sqlserver 觸發器 怎麼獲取更新前的值

2022-03-22 03:02:31 字數 1303 閱讀 7457

更新的動作你可以分2步理解,先delete ,再insert

所以,前的值在 deleted裡

後的值在 inserted裡

create trigger t_atdatestate_update

on list

for update

asif update(atdatestate)

begin

declare @b_atdatestate nvarchar(200)  --修改之前的

declare @s_atdatestate nvarchar(200)  --修改之後的

declare @s_id int

select @s_atdatestate= atdatestate from inserted --從更新後的副本表(臨時表)裡面 獲得要修改後的狀態

select @s_id=id,@b_atdatestate=atdatestate from deleted  --從之前刪掉的臨時表裡面獲取原來的值

if @s_atdatestate is null

begin

set @s_atdatestate='0'

endif @b_atdatestate is null

begin

set @b_atdatestate='0'

end--如果修改前為2,3,4  降低了狀態 向下修改  並且 修改後的狀態和修改前不一樣 

if ((convert(int,@b_atdatestate)>=2  and convert(int,@s_atdatestate)@s_atdatestate))

begin

insert into dbo.operate(c_id,before_atdatestate,after_atdatestate,o_ip,o_type)

values(@s_id,@b_atdatestate,@s_atdatestate,'','狀態不正常,向下降低了')

endif(convert(int,@b_atdatestate)<2) and ( convert(int,@s_atdatestate)>=2)

begin

insert into dbo.operate(c_id,before_atdatestate,after_atdatestate,o_ip,o_type)

values(@s_id,@b_atdatestate,@s_atdatestate,'','狀態公升高')

sqlserver觸發器複習

create table a a1 int,a2 int create table b b1 int,b2 int insert into a values 1,0 insert into b values 1,0 create trigger tri update a2 a on a for up...

SQL server 之 觸發器

今天對觸發器研究了一下,之前的學習感覺挺朦朧的,今天鼓搗了一天,算是有了一點點了解,把學習的體會記錄了下來。常見的觸發器 觸發器的作用 自動化操作,減少了手動操作以及出錯的機率 現實工作中用的比較少,因為想讓他執行起來效率高很難 一 dml觸發器 insert delete update 不支援se...

SQLSERVER的觸發器

觸發器的定義 觸發器是一種特殊型別的儲存過程,他不同於前面介紹過的一般的儲存過程 在sql內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...