| 導購 | 订阅 | 在线投稿
分享
 
 
 

濫用觸發器會造成數據庫及應用程序維護困難

2008-07-11 05:57:40  編輯來源:互聯網  简体版  手機版  移動版  評論  字體: ||

觸發器功能強大,輕松可靠地實現許多複雜的功能,爲什麽又要慎用呢。 觸發器本身沒有過錯,但由于我們的濫用會造成數據庫及應用程序的維護困難。

在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作,比如刪除 T1 表記錄時期望刪除 T2 表相關的記錄,此時可以建立級聯刪除的關系,也可以爲 T1 表建立觸發器使同時刪除 T2 表相關記錄,也可以自定義存儲過程刪除 T1 和 T2 表的記錄,也可以在應用程序中使用兩個 SQL 語句來刪除……到底用哪一種好呢,應該說我們建立通過建立關系來實現級聯刪除是最好的,除非更有高的需求。

觸發器還有一個用途可以用來保障數據的完整性,但同時規則、約束、默認值也可以保障數據完整性,到底哪一個好呢,一般說來,較爲簡單的完整性要求我們不應該使用觸發器。兩者在運行機制上也是有區別的,像規則、約束、默認值這些是在數據更改之前進行數據驗證,而觸發器是在數據更改之後進行驗證(如果事務回滾,該表將不會産生變化)。

總之,如果我們對觸發器過分的依賴,就會造成遍地是程序的情況,因爲觸發器本身就需要別的程序給它一個觸發條件,也就是說至少在兩個地方存在著程序,同時我們抛棄了約束、默認值等而選用觸發器,勢必影響數據庫的結構。

觸發器功能強大,輕松可靠地實現許多複雜的功能,爲什麽又要慎用呢。 觸發器本身沒有過錯,但由于我們的濫用會造成數據庫及應用程序的維護困難。 在數據庫操作中,我們可以通過關系、觸發器、存儲過程、應用程序等來實現數據操作,比如刪除 T1 表記錄時期望刪除 T2 表相關的記錄,此時可以建立級聯刪除的關系,也可以爲 T1 表建立觸發器使同時刪除 T2 表相關記錄,也可以自定義存儲過程刪除 T1 和 T2 表的記錄,也可以在應用程序中使用兩個 SQL 語句來刪除……到底用哪一種好呢,應該說我們建立通過建立關系來實現級聯刪除是最好的,除非更有高的需求。 觸發器還有一個用途可以用來保障數據的完整性,但同時規則、約束、默認值也可以保障數據完整性,到底哪一個好呢,一般說來,較爲簡單的完整性要求我們不應該使用觸發器。兩者在運行機制上也是有區別的,像規則、約束、默認值這些是在數據更改之前進行數據驗證,而觸發器是在數據更改之後進行驗證(如果事務回滾,該表將不會産生變化)。 總之,如果我們對觸發器過分的依賴,就會造成遍地是程序的情況,因爲觸發器本身就需要別的程序給它一個觸發條件,也就是說至少在兩個地方存在著程序,同時我們抛棄了約束、默認值等而選用觸發器,勢必影響數據庫的結構。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有