線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1336
推到 Plurk!
推到 Facebook!

以下trigger可成功建立但是執行時卻無trigger作用?

尚未結案
huangeider
高階會員


發表:288
回覆:492
積分:231
註冊:2003-02-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-05-04 22:09:46 IP:202.145.xxx.xxx 未訂閱
以下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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-05-04 23:14:51 IP:61.62.xxx.xxx 未訂閱
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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-05-04 23:26:39 IP:202.145.xxx.xxx 未訂閱
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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-05-04 23:32:14 IP:202.145.xxx.xxx 未訂閱
引言: 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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-05-05 09:25:39 IP:218.163.xxx.xxx 未訂閱
引言: 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, 就必須改寫了.
系統時間:2024-09-12 18:47:25
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!