觸發器調試

      今天第一次寫項目中的觸發器。雖說以前也看過一些關於觸發器的書籍,自己也知道語法,但是卻從沒有在真正的大項目中寫過。按照項目的需求和觸發器的語法,我成功創建了一個觸發器。另我感到奇怪的是,原本會定時自動向數據庫裏插入數據,卻在創建觸發器後不再插入了,而觸發器的編譯卻沒有錯誤。不過通過手動插入一條數據時,pl/sql還是鎖定到了觸發器異常上。於是,我決定測試此觸發器。以前測試過程,函數時只要右擊點擊Test即可,但如今發現這種方法對觸發器卻行不通。經過書籍和網上資料的查找,成功地找到了錯誤,解決了問題。其實錯誤就是在觸發器中寫入了commit,而觸發器是自動提交的,不需要再通過commit去提交了。pl/sql測試步驟如下:

   

      登錄pl/sql,新建一個Test Window窗口;

      在begin代碼塊中寫入可以觸發此觸發器執行操作的sql腳本語句;

      按F9進入調試狀態,這樣就可以跟蹤觸發器中的sql語句並找出異常發生的位置。

 

示例:

-- Created on 2010-3-25 by ZHUYUANMING
declare
  -- Local variables here
  i integer;
begin
  -- Test statements here
  insert into dat_alarm_tb(rec_no,tag) values (seqdat_alarm.nextval,'CDU3_FT1410');
end;

 

以上即可對創建的oracle觸發器進行測試。

-------------------------------------------------------------------------------------------------------------------------------------

下面將網上找到的sql server的調試方法介紹如下(轉自http://blog.csdn.net/giant36/):

 

1、創建存儲過程以便觸發觸發器
3、選擇單步運行存儲過程
2、在觸發事件的語句如:insert 、update 、delete語句時按F11
-------------------------------------
本方法在sql server 2000+win2000 server 通過測試
本方法在vs.net 2003 + sql server 2000+win2000 server 通過測試
-------------------------------------


實例教學:
一、打開SQL查詢分析器
二、將以下Sql語句複製到查詢窗口並運行
use pubs
CREATE  trigger trigger_update on authors
for update
as
begin
 print('update lastname=hoho')
end
CREATE    proc Authors_procInsert
as
begin
 update  authors set au_lname='HOHO' where au_id='172-32-1176'
end
三、在左邊的對象瀏覽器中選擇pubs->存儲過程在Authors_procInsert(如未出現請刷新pubs數據庫)上右擊彈出菜單選擇“調試...”
四、當運行到" update  authors set au_lname='HOHO' where au_id='172-32-1176'“時按“F11”即進入觸發器代碼。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章