sql觸發器判斷空值更新資料,sql 更新觸發器 更新指定欄位值為某個值時觸發

2023-01-11 08:06:03 字數 3286 閱讀 5651

1樓:骨頭愛讀書

create trigger tri

on table --在student表中建立觸發器

for update --為什麼事件觸發

as --事件觸發後所要做的事情

if update(table )

begin

update table

if a='' then set a=b endif

from table br , deleted d ,inserted i --deleted和inserted臨時表

where br.a=d.saend

sql 更新觸發器 更新指定欄位值為某個值時觸發

2樓:匿名使用者

看看我這個帖子裡面介紹很清楚

sql如何取得觸發器update前的值

3樓:小小小小顰

具體操作步驟如下:

1、首先,建立一個觸發器,要求是在addtable表上建立update觸發器,如下圖所示,然後進入下一步。

3、接著,對addtable表中的資料執行更改操作,如下圖所示,然後進入下一步。

4、然後,完成上述步驟後,會發現觸發了觸發器並輸出了設定的文字,如下圖所示,然後進入下一步。

5、隨後,只需要更改create為alter,再修改邏輯,如下圖所示,然後進入下一步。

7、最後,執行另一項測試以更改addtable表,並發現觸發update觸發器後,由於資料保護,該觸發器被中止,如下圖所示。這樣,問題就解決了。

4樓:匿名使用者

select @inta=(你要的值) from inserted (inserted 表 是更新前 資料的備份)if (@abcd-@inta) / @inta > 0.2 else

5樓:匿名使用者

update是先delete,再insert比較inserted與deleted值就好了

6樓:匿名使用者

更新的動作你可以分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,'','狀態升高')

endend

觸發器:當sql插入或更新時判斷寫入值,當滿足某條件後修改寫入值,如何實現? 30

7樓:談論使用者名稱

可以實現的。你用的哪個資料庫。資料庫不同,格式會有一點不一樣。

8樓:

oracle,sql server還是?

oracle pl/sql before update觸發器,判斷要update的欄位是否符合null or not null規則, 如果符合update.

9樓:匿名使用者

這樣一個比較容易解決的老問題,你必須延遲修改本表到after trigger之後 .

推薦你讀一下 asktom關於這個問題的文章.

或者修改使用instead of 觸發 最好

10樓:匿名使用者

看看triger的自治事務

11樓:石亮東

不能對本表進行dml 操作

判斷8. 在sql server中,觸發器的執行是在資料的插入.更新或刪除之前執行的。( )

12樓:賓士

錯誤。觸發器執行順序根據 before 和 after 關鍵字決定。

使用before 關鍵字:觸發器的執行是在資料的插入.更新或刪除之前執行的。

使用after關鍵字:觸發器的執行是在資料的插入.更新或刪除之後執行的。

sql如何建立刪除的觸發器,SQL如何建立刪除的觸發器

create trigger a表 delon a表for delete as set nocount on delete e from a表 e inner join deleted d on e.主鍵id d.主鍵id create trigger tri del on table a for ...

sql觸發器怎麼獲取插入的記錄轉存到另資料庫的表裡

create trigger a1 a on dbo a1 for insert asinsert into b.dbo.b1 g,h,j select c as g,d as h,e as j from inserted 在a資料庫a1表,加上面的觸發器 只限於同一臺伺服器不通資料庫資料轉存 如果...

已知一下降沿觸發器的JK觸發器,其輸入波形如下,試畫出Q的波形圖

從波形圖可以看出 復位 r 置位 s 是高電平有效,觸發器是時鐘 clk 下降沿有效的同步觸發方式專,屬當 r 1,s 1 時,究竟是要觸發器置位還是復位?這樣的輸入邏輯是錯誤的,輸出狀態與具體器件的離散性有關,所以輸出不確定。正常電路不會出現這種輸入狀態。從波形圖可以看出bai 復位 r 置du位...