after觸發器和instead of 觸發器的區別

來源:互聯網
上載者:User

AFTER 觸發器(也叫“FOR”觸發器)會在觸發 insert、update 或是delect 動作之後執行。例如,一個 Employees 表上的 AFTER 觸發器會在在 Employee 表上執行一條 update 語句後啟用。因此,AFTER 觸發器只有在已插入一行或是多行和所有約束已被處理且通過後才觸發。INSTEAD OF 觸發器和 AFTER 觸發器有本質上的不同,因為 INSTEAD OF 觸發器代替觸發動作進行激發。就拿同樣的例子來說,如果在 Emplyees 表上有一個 INSTEAD
OF UPDATE 觸發器和在這個表上執行一條 UPDATE 語句,結果是這條 UPDATE 語句並不會改變 Employee 表中的任何一行。相反,這條 UPDATE 語句只有是為了踢離 INSTEAD OF UPDATE 觸發器,這個觸發器可能會,也可能不會改變 Employees 表中的資料。

   因此,怎麼決定在合適的時間和位置放置 INSTEAD OF 觸發器呢?有幾個關鍵的因素在做決定是值得考慮的。AFTER 觸發器多用在動作必須在表中資料發生改變之後才執行後情情況。比如,AFTER 觸發器可以用於將對資料作任何變動的日誌記錄在一個相對獨立的審計表中。INTEAD OF 觸發器也能做同樣的工作。但是 INSTEAD OF 觸發器在這個情況下的效率比較低,因為更新動作只能在將它發生的動作準確地記錄在審計表之後才允許執行。

一般來說,只要不影響資料的修改,AFTER 觸發器比 INSTEAD OF 觸發器更有效率。在對資料進行計算或是對資料的修改作為一個整體提交或是作為一個整體回退的情況下,AFTER 觸發器也是一個很好的選擇。例如,存在這樣一條規則:對在 Products 表的產品價格的變動超過30%的必須回退。AFTER 觸發器能很漂亮地完成這個工作,它利用已插入同已刪除的表中的產品價格作比較,然後在有必要的時復原事務。這些都是 AFTER 觸發器的理想條件,但有時 INSTEAD OF會更好些。

  INSTEAD OF 觸發器有一個很大的特點——就是它允許你在某個表或視圖上用多個複雜的查詢操作來代替單一的查詢。跟 AFTER 觸發器只能對錶起作用不同,INSTEAD
OF 觸發器可以同時對錶和視圖起作用。我常常被問到怎麼樣去解決這種情況:有一個多表組成的視圖,如何對該視圖進行一次更新。如果視圖包含有關鍵字段和包含有基本表的某些欄位,這隻是簡單的更新基本表。但是,當有視圖中包含有多個基本表示,邏輯上的更新比單單一個 UPDATE 語句會更複雜。因此,你是怎麼利用什麼可以替代的工具來解決這個問題的呢?其中一個方法就是將一個INSTEAD OF 觸發器放在視圖上。INSTEAD OF 觸發器可以定義在一個或多個表上.INSTEAD OF 觸發器就能轉開在多個基本表中修改的範圍.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.