1. 程式人生 > >【機房重構】——檢視,觸發器,儲存過程的使用

【機房重構】——檢視,觸發器,儲存過程的使用

       在機房收費系統中,對多個表的查詢,要寫多個SQL是很麻煩的事情,為了方便我們寫程式碼,同時對程式碼進行解耦和,我們引用了檢視,觸發器,儲存過程。

一、是什麼?

檢視

     從若干個基本表和其他檢視構造出來的虛擬表。檢視本身並不儲存實際的資料,而僅僅儲存一個Select語句和所涉及表的metadata。


觸發器

     特殊的儲存過程,此機制是由事務觸發而完成的,而不是儲存過程的呼叫。



儲存過程
     一組完成特定功能的SQL語句集合以及流程控制語句編寫的模組,儲存過程經過編譯後儲存在資料庫服務端的資料庫中,使用時呼叫即可。


二、為什麼?


檢視
     (1)提供了使用者訪問的介面,使用者不必知道底層的表結構是什麼樣的,當表改變時,只需改變檢視的語句,而客戶端不許改變,降低了耦合性

     (2)加強了安全性,使用者只能看到檢視提供的那部分資料,其他的看不到

     (3)簡化了資料庫的訪問操作

儲存過程

     (1)提高執行速度,呼叫儲存過程的速度會比執行一條SQL語句要快的多。
     (2)只需編譯一次即可,而SQL語句使用一次編譯一次。
     (3)可以反覆呼叫,減輕了程式編寫的工作量
     (4)增強了SQL的功能和靈活性,能完成複雜的樓及判斷和複雜運算


觸發器
     (1)通過資料庫中的相關表來實現級聯操作。
     (2)自動執行
     (3)觸發器可以強制用比CHECK約束定義的約束更為複雜的約束。(這一點不太理解)
。。。。。。


三、怎麼用?

1、建立檢視後,使用時和使用表一樣。

Create View <檢視名>(<列表序列>)
AS<SELECT 查詢語句>


2、儲存過程

     例如:機房收費系統中的充值操作,當進行充值操作時,要在充值表中新增一條充值記錄,並更新卡表裡的卡餘額。


3、觸發器

    例如:機房收費系統中的退卡操作,當進行退卡操作時,要在退卡表裡更新一條記錄,並在卡表裡刪除對應的卡。

四、總結

     上面的兩張圖是從師傅部落格總截的圖。檢視用過了,觸發器和儲存過程還沒有使用。雖然觸發器和儲存過程有這麼多優點,但我們要慎用,拒絕濫用。