以下trigger可成功建立但是執行時卻無trigger作用? |
尚未結案
|
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
以下sql trigger可建立但卻無trigger作用,若紅色部分不加入則可正常trigger
,請問有何錯誤?兩種方式都可執行而沒有錯誤訊息但結果是一可trigger另一則無作用
CREATE trigger [trigger_mf_pss] on [tf_pss] AFTER insert,delete
as
begin
declare @ins_count int,
@del_count int,
@test_count int
if @@rowcount = 0 return select @ins_count=count(*) from inserted
select @del_count=count(*) from deleted if @ins_count>0 begin
insert into attn1.pubs.dbo.tran_file(data) select '4a' from inserted,deleted where inserted.ps_no<>deleted.ps_no
end
end 堅持從洗馬桶做起
Eric
|
timhuang
尊榮會員 ![]() ![]() ![]() ![]() ![]() ![]() 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
HI, 你的紅色語法是指異動了 ps_no 這個欄位的意思哦.
所以請確認這是你要的功能, 若是使用 insert, delete 的 trigger 時, 只會有 inserted 或 deleted 暫存表, 並不會同時出現, 所以你的紅色部分的語法若是加進來這個 trigger 的話, 條件就一定不成立囉!! insert trigger => inserted
delete trigger => deleted
update trigger => inserted, deleted 關係如上!!
|
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
HI, 你的紅色語法是指異動了 ps_no 這個欄位的意思哦.
所以請確認這是你要的功能, 若是使用 insert, delete 的 trigger 時, 只會有 inserted 或 deleted 暫存表, 並不會同時出現, 所以你的紅色部分的語法若是加進來這個 trigger 的話, 條件就一定不成立囉!! insert trigger => inserted
delete trigger => deleted
update trigger => inserted, deleted 關係如上!!
請教若要如下的判斷時,在trigger中大概得如何做法
小弟目前是用trigger把此trigger的inserted另建table1再到
table1做判斷才行的
在同一table中的同trigger做以下意思的判斷可行嗎?
if @ins_count>0 begin
insert into attn1.pubs.dbo.tran_file(data) select '4a' from inserted,deleted where inserted.ps_no<>deleted.ps_no 堅持從洗馬桶做起
Eric
|
huangeider
高階會員 ![]() ![]() ![]() ![]() 發表:288 回覆:492 積分:231 註冊:2003-02-26 發送簡訊給我 |
引言: HI, 你的紅色語法是指異動了 ps_no 這個欄位的意思哦. 所以請確認這是你要的功能, 若是使用 insert, delete 的 trigger 時, 只會有 inserted 或 deleted 暫存表, 並不會同時出現, 所以你的紅色部分的語法若是加進來這個 trigger 的話, 條件就一定不成立囉!! insert trigger => inserted delete trigger => deleted update trigger => inserted, deleted 關係如上!! 請教若要如下的判斷時,在trigger中大概得如何做法 小弟目前是用trigger把此trigger的inserted另建table1再到 table1做判斷才行的 在同一table中的同trigger做以下意思的判斷可行嗎? if @ins_count>0 begin insert into attn1.pubs.dbo.tran_file(data) select '4a' from inserted,deleted where inserted.ps_no<>deleted.ps_no 再請教 在同一table中的同trigger做以下意思(把delete換成mf_pss table)的判斷可行嗎?因小弟試過以下的sql語法可以成功加入trigger但執行時跑很久,按程序管理員發現無回應了 ,不知我的語法邏輯錯在那? if @ins_count>0 begin insert into attn1.pubs.dbo.tran_file(data) select '4a' from inserted inner join mf_pss on inserted.ps_no<>mf_pss.ps_no 堅持從洗馬桶做起 Eric堅持從洗馬桶做起 Eric 發表人 - huangeider 於 2004/05/04 23:46:10 |
Mickey
版主 ![]() ![]() ![]() ![]() ![]() 發表:77 回覆:1882 積分:1390 註冊:2002-12-11 發送簡訊給我 |
引言: HI, 你的紅色語法是指異動了 ps_no 這個欄位的意思哦. 所以請確認這是你要的功能, 若是使用 insert, delete 的 trigger 時, 只會有 inserted 或 deleted 暫存表, 並不會同時出現, 所以你的紅色部分的語法若是加進來這個 trigger 的話, 條件就一定不成立囉!! insert trigger => inserted delete trigger => deleted update trigger => inserted, deleted 關係如上!!對不起, 離題討論一下, 據我所知, insert Trigger 中 deleted 暫存表依然存在, 只是是空的 (select count(*) from deleted)=0, 我常運用這樣的特性, 判斷該 Trigger, 是被何種動作(insert/delete/update)驅動, 不知版本是否有影響, 若證實這特性已改變, 我以前寫的 Trigger, 就必須改寫了. |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |