淺談觸發器和預存程序,淺談觸發器

來源:互聯網
上載者:User

淺談觸發器和預存程序,淺談觸發器


 

去年初識SQL資料庫的時候就接觸了著兩個概念,但是對於這兩對兄弟從何而來,又有什麼作用幾乎一片空白。慢慢的經曆了一次又一次的機房收費,跟他們打了一次又一次的照面,然後是最近敲牛腩新聞發布系統,牛腩老師恨不得所有的SQL語句都寫成預存程序,所有稍複雜的多表操作都要用上觸發器,才發現在與資料庫打交道的歲月,他們應該也是宿命一樣的存在---逃不掉,就好好談談。

 

WHAT:

 

觸發器: 基本表在被修改的時候通過事件觸發而執行的預存程序。(被動)

作用是保證了由主鍵和外鍵所不能保證的參照完整性和資料完整行。

 

預存程序: 一種資料庫物件,將負責不同功能的語句分類封裝好,以便反覆調用。(主動)

 

WHY:

 

觸發器:

1:實現比約束更複雜的資料的完整性

2:返回自訂的錯誤資訊

3:實現多張表的連級修改

預存程序:

1:語句封裝,可多次調用,just like 物件導向

2:執行速度更快(預存程序第一次執行便被分析最佳化)

3:保證資料安全(系統管理員可對預存程序進行許可權限制)

 

Personal Understanding:

1:觸發器是一個被動的執行過程,更像是一個保護機制,當我的某個資料庫的某條資料被修改的時候我預先寫好的觸發器就這樣被觸發了,然後他就會通過主外鍵約束來對其他表的資料進行合理修改以滿足整個資料的完整性。而預存程序卻是一個十足的積極主動能手,主動把SQL語句分類封裝,就像我們在機房收費的時候封裝的方法,我寫好了有類似的需求直接調用就可以了。

 

2:觸發器和預存程序都是資料庫這個層面上進行的操作和修改,可以說基本跟我們要實現的軟體代碼沒半毛錢關係,這樣也是符合分層思想的,而且有利於後期系統的維護和修改。如果哪個功能塊需求變更我們可能只需要修改資料庫裡的預存程序或者觸發器而不用開啟大段的代碼去修改SQL語句。

 

3:兩者都從不同方面保護了資料,觸發器可以保護資料的完整性,而預存程序則是通過許可權管理維護資料的安全。

 

相關文章

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.