存儲過程和觸發器都是數據庫中很是重要的知識,接下來將在文章中經過許多方面來比較這二者之間的不一樣,具備必定的參考做用但願對你們有所幫助。數據庫
觸發器是數據庫中的表/視圖發生某些特定事件時自動執行的過程(代碼段)。觸發器主要用於維護數據庫中的完整性。觸發器還用於實施業務規則,審覈數據庫中的更改以及複製數據。最多見的觸發器是在操做數據時觸發數據操做語言(DML)觸發器。某些數據庫系統支持非數據觸發器,這些觸發器在發生數據定義語言(DDL)事件時觸發。這些觸發器能夠特別用於審計。Oracle數據庫系統支持模式級觸發器3d
存儲過程是能夠由訪問關係數據庫的應用程序。一般,存儲過程用做驗證數據和控制對數據庫的訪問。若是某些數據處理操做須要執行多個SQL語句,則此類操做將做爲存儲過程實現。調用存儲過程時,必須使用CALL或EXECUTE語句。存儲過程能夠返回結果(例如SELECT語句的結果)。這些結果能夠由其餘存儲過程或應用程序使用。用於編寫存儲過程的語言一般支持控制結構,例如if,while,for等。根據所使用的數據庫系統,可使用多種語言來實現存儲過程blog
(1)存儲過程是一組已建立並存儲在數據庫中的SQL語句。因此咱們能夠一遍又一遍地重用代碼。而觸發器是一種特殊的不是由用戶直接調用存儲過程,建立觸發器時,會定義在針對特定表或列進行特定類型的數據修改時觸發。事件
(2)用戶可使用Execute或Exec語句來直接調用或執行存儲過程,而沒法直接調用或執行觸發器。觸發相關事件時,只會自動執行觸發器。事務
(3)存儲過程能夠採用輸入參數,而觸發器中不能將參數做爲輸入咱們不能將參數做爲輸入傳遞給觸發器。it
(4)存儲過程能夠返回零或n值,觸發器沒法返回值。table
(5)咱們能夠在存儲過程當中使用事務,觸發器內不容許進行事務處理class
(6)存儲過程一般用於執行用戶指定的任務,觸發器一般用於審計工做程序