oracle中,存儲過程是一組為了完成特定功能的sql語句,存儲在數據庫中,存儲過程能夠反復使用,減少開發人員工作量;而觸發器是數據庫提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程。
本教程操作環境:Windows7系統、Oracle 11g版、Dell G3電腦。
oracle中觸發器是什么
觸發器(trigger)是數據庫提供給程序員和數據分析員來保證數據完整性的一種方法,它是與表事件相關的特殊的存儲過程。由事件觸發。
觸發器在觸發一定事件的時候隱式執行的一段sql語句,觸發器不能接收參數。Oracle觸發器則是觸發Oracle數據庫中對數據庫進行insert、update、delete操作或對視圖進行類似的操作,還有一些系統的事件,比如數據庫的關閉或開啟。
觸發器的分類有哪些?
? ? (1)、數據操縱語言(DML)觸發器:創建在表上,有DML時間來觸發的觸發器;
? ? (2)、替代(instead of)觸發器:創建在視圖上,用來替換對視圖進行添加、修改和刪除操作。
? ? (3)、數據定義語言(DDL)觸發器:定義在模式上,觸發事件是對數據庫對象的創建和修改操作。
? ? (4)、數據庫系統觸發器:定義在整個數據庫上,觸發的時間是數據庫的操作,比如數據庫的啟動和關閉。
觸發器的組成部分有哪些?
? ? (1)、觸發的事件:即在何種情況下觸發trigger,例如:insert、update、delete。
? ? (2)、觸發的時間:即該trigger是在觸發事件之前(before)還是在觸發事件之后(after),也是觸發的事件和該trigger主體的先后順序。
? ? (3)、觸發器本身:即觸發器在觸發事件的時候要執行的操作,例如:pl/sql塊。
? ? (4)、觸發的頻率:說明該觸發器內定義的動作被執行的次數。即語句級觸發器和行級觸發器。語句級觸發器是指當某個事件發生時,該觸發器只執行一次。而行級觸發器,在某個事件發生時,對受到該操作影響的每一行數據,都會單獨執行一次觸發器。
oracle中存儲過程是什么
存儲過程(Stored Procedure)是在大型數據庫系統中,一組為了完成特定功能的SQL 語句集,存儲在數據庫中,經過第一次編譯后再次調用不需要再次編譯,用戶通過指定存儲過程的名字并給出參數(如果該存儲過程帶有參數)來調用存儲過程。
簡單的說就是專門干一件事一段sql語句。
存儲過程能夠反復使用,減少開發人員工作量。
在oracle數據庫中存儲過程是procedure。
為什么要寫存儲過程
1.效率高
存儲過程編譯一次后,就會存到數據庫,每次調用時都直接執行。而普通的sql語句我們要保存到其他地方(例如:記事本 上),都要先分析編譯才會執行。所以想對而言存儲過程效率更高。
2.降低網絡流量
存儲過程編譯好會放在數據庫,我們在遠程調用時,不會傳輸大量的字符串類型的sql語句。
3.復用性高
存儲過程往往是針對一個特定的功能編寫的,當再需要完成這個特定的功能時,可以再次調用該存儲過程。
4.可維護性高
當功能要求發生小的變化時,修改之前的存儲過程比較容易,花費精力少。
5.安全性高
完成某個特定功能的存儲過程一般只有特定的用戶可以使用,具有使用身份限制,更安全。
推薦教程:《Oracle教程》