【機房重構】——視圖,觸發器,預存程序的使用,觸發器預存程序

來源:互聯網
上載者:User

【機房重構】——視圖,觸發器,預存程序的使用,觸發器預存程序

       在機房收費系統中,對多個表的查詢,要寫多個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、觸發器


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


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

相關文章

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.