濫用觸發(fā)器會造成數(shù)據(jù)庫及應(yīng)用程序維護困難
發(fā)布時間:2008.07.10 04:38 來源:賽迪網(wǎng) 作者:水晶
【賽迪網(wǎng)-IT技術(shù)報道】觸發(fā)器功能強大,輕松可靠地實現(xiàn)許多復(fù)雜的功能,為什么又要慎用呢。 觸發(fā)器本身沒有過錯,但由于我們的濫用會造成數(shù)據(jù)庫及應(yīng)用程序的維護困難。 在數(shù)據(jù)庫操作中,我們可以通過關(guān)系、觸發(fā)器、存儲過程、應(yīng)用程序等來實現(xiàn)數(shù)據(jù)操作,比如刪除 T1 表記錄時期望刪除 T2 表相關(guān)的記錄,此時可以建立級聯(lián)刪除的關(guān)系,也可以為 T1 表建立觸發(fā)器使同時刪除 T2 表相關(guān)記錄,也可以自定義存儲過程刪除 T1 和 T2 表的記錄,也可以在應(yīng)用程序中使用兩個 SQL 語句來刪除……到底用哪一種好呢,應(yīng)該說我們建立通過建立關(guān)系來實現(xiàn)級聯(lián)刪除是最好的,除非更有高的需求。 觸發(fā)器還有一個用途可以用來保障數(shù)據(jù)的完整性,但同時規(guī)則、約束、默認(rèn)值也可以保障數(shù)據(jù)完整性,到底哪一個好呢,一般說來,較為簡單的完整性要求我們不應(yīng)該使用觸發(fā)器。兩者在運行機制上也是有區(qū)別的,像規(guī)則、約束、默認(rèn)值這些是在數(shù)據(jù)更改之前進行數(shù)據(jù)驗證,而觸發(fā)器是在數(shù)據(jù)更改之后進行驗證(如果事務(wù)回滾,該表將不會產(chǎn)生變化)。 總之,如果我們對觸發(fā)器過分的依賴,就會造成遍地是程序的情況,因為觸發(fā)器本身就需要別的程序給它一個觸發(fā)條件,也就是說至少在兩個地方存在著程序,同時我們拋棄了約束、默認(rèn)值等而選用觸發(fā)器,勢必影響數(shù)據(jù)庫的結(jié)構(gòu)。(責(zé)任編輯:盧兆林
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請
點擊舉報。