Oracle的觸發器,Oracle觸發器

來源:互聯網
上載者:User

Oracle的觸發器,Oracle觸發器

過去做項目。都是前端背景編碼。因為資料庫都讓專案經理給寫好的。自己對於資料庫並沒有多少最佳化,時間久了,反而把資料庫的知識給淡忘了,最近的項目用到的是Oracle資料庫,大家都知道,用到這個資料庫,就是資料量比較大的項目了。對於最佳化就有必要了。因此自己下班後抽空複習一下,並把這個記錄下來,不只是分享給大家,還能以後自己再次複習。若我講得不對,請留言更正,本人會虛心接受並改更,這樣才能進步。

1.什麼是觸發器每當一個特定的數動作陳述式(insert,update,delete)在指定的表上發出時,Oracle自動的執行觸發器中定義的語句序列。這個定義,大家看到就能明白觸發器的作用了,增刪改查,為什麼觸發器沒有查詢呢。因為Oracle的觸發器是針對資料變動時所觸發的一種待定行動。比如你刪除了一個表中的欄位,刪除觸發器就會啟動,執行他的命令。同理,修改和增加方法也是一樣。只要你執行了增刪改方法,從而改變了表的資料時,你所設定相應的觸發器就會執行。例子:每當成功插入新員工後,自動列印一句話“成功插入新員工”;
create trigger saynewemp<span style="white-space:pre"></span>//建立一個觸發器 <span style="font-family: Arial, Helvetica, sans-serif;">saynewemp是觸發器的名字</span>after insert<span style="white-space:pre"></span>//執行插入方法後觸發on emp<span style="white-space:pre"></span>//針對是哪個表declare<span style="white-space:pre"></span>//聲明begin<span style="white-space:pre"></span>//開始   dbms_output.put_line("成功插入新員工")<span style="white-space:pre"></span>//觸發時列印一句話end;<span style="white-space:pre"></span>//結果
一個員工表的插入觸發器就寫好了。只要我們對員工表執行insert插入操作後,就會執行觸發器中的行為,如上所示,會自動列印一句話。2.觸發器的應用情境第一種:複雜的安全性檢查,就比如我們項目中的需求,如果有周末放假不能對資料庫進行改變,那我們就可以用觸發器對他進行限制第二種:資料的確認,比如你拿100塊買1塊錢的東西的時候,老闆找錢給你時,你是不是要數一數,確認一下是否有沒有錯呢第三種:資料庫的審計,他是針對資料庫的操作記錄,可以記錄誰對資料庫進行了什麼操作,Oracle已經有內建的這種功能,我們也可以自己用觸發器實現他第四種:資料的備份和同步,這個也好理解,就是當你對資料庫進行操作以後,就觸發備份操作,這有點像單機遊戲英雄無敵裡的遊戲儲存一樣,當輪到你操作時,就會自動執行一次自動儲存。3.建立.觸發器的文法
CREATE[or REPLACE]TRIGGER 觸發器的名字<span style="white-space:pre"></span>//建立一個觸發器{BEFORE|AFTER}<span style="white-space:pre"></span>//觸發器執行的順序,是方法前還是方法後執行{DELETE|INSERT|UPDATE(OF 列名)}<span style="white-space:pre"></span>//給哪個方法設定觸發器,在UPDATE方法中,可以用OF指明哪一列名ON 表名<span style="white-space:pre"></span>//哪個表[FOR EACH ROW[WHEN(條件)]]<span style="white-space:pre"></span>//如果有FOR EACH ROW,那就是行級觸發器,反之,就是語句觸發器PLSQL塊<span style="white-space:pre"></span>//執行塊
是不是很抽象呢,其實大家從名字就可以清楚知道他們的分別。我在下面舉例說明吧。例子:我們要在把員工表中的一個欄位資料(有三條)插入到新的一個表中,
<span style="white-space:pre"></span>INSERT INTO EMP10 SELECT * FROM EMP WHERE NAME = 10;
如果是語句級觸發器的話,只觸發一次,因為語句級觸發器:針對的是表,而行級觸發器,前面也說了,是三條記錄,自然會觸發三次行級觸發器,也就是,針對的是行。就如前面的文法中,行級觸發器FOR EACH ROW 語句,後面也可以加WHEN的條件,可以指定哪一行。

 這些是觸發器的介紹。看到這裡,大家就能明白觸發器是什麼,幹什麼用的,在什麼情景下使用了。雖然這篇很基礎,但對於新人還是有些協助的。

著作權聲明:本文為博主原創文章,未經博主允許不得轉載。

相關文章

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.