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位...