2012-06-13 117 views
0

我是新來處理觸發器,我很難理解如何寫一個觸發器來更新一個表中的字段,當一個記錄被插入到另一個表中。如何基於另一個記錄插入的數據使用觸發器更新一個表中的字段?

詳細說明,我有2個表:servTickets和servTicketNotes。

servTickets有幾個用於客戶,聯繫人,電話,電子郵件,問題描述,狀態等的文本字段......此表中的PK是一個名爲callID的INT字段。

servTicketNotes只有2個字段--PK是一個INT字段'callID',並且有一個名爲image的BLOB字段,用於存儲服務報告的圖像。

當我在servTicketNotes中插入一條新記錄時,我正努力做的事情是觸發器更新servTickets中的status字段值爲Closed

我很困惑,如果這是INSERT AFTER或BEFORE或BOTH場景,但基本上如果發送報告(從而在servTicketNotes中創建記錄,我希望觸發器使用相同的callID查找記錄在servTickets表和狀態值更改爲「關閉」。

這似乎應該是很簡單,但我似乎無法掌握如何開始......

預先感謝您的幫助/指導!

回答

0

是否可能是POST觸發器 - 表示:

在您提交了傳入記錄之後,您需要採取進一步操作 - 即插入其他表中。

如果你這樣做了PRE commit,那麼你會擔心Notes上發生了一些錯誤,並且最終可能導致狀態更新不正確。

+0

謝謝你,蘭迪。你的回答讓我走上了正確的道路!感謝你和艾克兩位! – AMPSYS

0

你可以用AFTER INSERT觸發器來做到這一點。嘗試這樣的:

DELIMITER $$ 

DROP TRIGGER IF EXISTS tr_a_ins_servTicketNotes $$ 

CREATE TRIGGER pabeta.tr_a_ins_servTicketNotes AFTER INSERT ON servTicketNotes FOR EACH ROW BEGIN 
    update servTickets 
    set status = 'Closed' 
    where callID = NEW.callID; 

END $$ 

DELIMITER ; 
+0

謝謝,艾克 - 這是我最終得以工作的結果。 – AMPSYS

相關問題