更新的動作你可以分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內部把觸發器看做是儲存過程但是不能傳遞引數 一般的儲存過程通過儲存過程名稱被直接呼叫,而觸發器主要是通過事件進行觸發而被執行.總的來說,觸發器是一種功能強大的工具,在表中資料發生變化時自動強制執行,觸發器還可以...