正文 關於MySQL數據庫中觸發器的學習探討(1 / 3)

關於MySQL數據庫中觸發器的學習探討

計算機教育

作者:劉麗娟 吳達勝

摘 要: 觸發器是一種特殊的存儲過程,是數據庫強製業務規則和控製數據完整性的一種主要方法。探討了在MySQL數據庫中通過觸發器技術實現數據完整性控製機製,重點討論了MySQL數據庫中觸發器的工作原理與實現過程,結合實例分析設計觸發器的基本步驟。針對觸發器這一數據庫學習中的重點和難點,給出了在MySQL數據庫中對觸發器的理解和使用方法。

關鍵詞: 數據庫; 完整性; 觸發器; MySQL

中圖分類號:TP311 文獻標誌碼:A 文章編號:1006-8228(2014)04-66-03

Abstract: The trigger is a special storing procedure, and a major method to force the business rules and control the data integrity. The control mechanism of data integrity according to trigger technology in MySQL is discussed, mainly work principle and implementation process with examples of analysis and design. In connection with the emphasis and difficulty of trigger in database learning, the understanding and using introduction of trigger in MySQL are given.

Key words: database; integrity; trigger; MySQL

0 引言

隨著計算機技術的發展,數據已經滲透到當今每一個行業和業務職能領域,成為重要的生產因素。數據庫技術已經成為計算機信息係統與應用係統的核心技術和重要基礎。數據庫是一門理論與實踐緊密結合的課程,它作為計算機及相關專業的骨幹課程,在教學中占有重要的位置[1]。觸發器是這門課程中的一個重點,觸發器的靈活性增加了學生學習的難度,是該門課程的難點之一[2]。

觸發器是與表事件相關聯的特殊存儲過程,它們不能直接執行,隻在發生針對表的insert、update、delete事件時觸發。用戶不能繞過觸發器,除非觸發器向客戶端發送消息,否則最終用戶將不會意識到觸發器的存在。

觸發器的開發涉及多種SQL技術。要開發出良好的觸發器,必須理解事務的流程和鎖定、SQL以及存儲過程。觸發器包含幾個獨特的元素,開發人員必須對其進行仔細規劃,並通過觸發器實現複雜的業務規則和數據驗證功能。

有些DBA反對使用觸發器,因為它們是專用的。如果將數據庫移植到其他平台,必須重寫大部分觸發器代碼。另外,觸發器還被指責影響性能。然而,如果規則過於複雜,無法使用約束來實現,則隻能使用觸發器來實現。業務規則在服務器外實現就不是規則了,而隻是建議。設計糟糕的觸發器將影響性能,但設計良好的觸發器不但可以確保數據完整性,還能提供良好的性能[3]。

1 基本概念

觸發發器是一種特殊的存儲過程,它在插入、刪除或修改特定表中的數據時觸發執行,它比數據庫本身標準的功能有更精細和更複雜的數據控製能力。與存儲過程不同的是,存儲過程通過其他程序來啟動運行,而觸發器由一個事件來啟動運行,並且觸發器不能接收參數[4]。

數據庫觸發器有以下作用。

⑴ 安全性:可以基於數據庫的值使用戶具有操作數據庫的某種權利。

⑵ 審計:可以跟蹤用戶對數據庫的操作,審計用戶操作數據庫的語句,把用戶對數據庫的更新寫入審計表。

⑶ 實現複雜的數據完整性規則:實現非標準的數據完整性檢查和約束,觸發器可產生比規則更為複雜的限製,與規則不同,觸發器可以引用列或數據庫對象。例如,觸發器可以回退任何借出去的書超過庫存的數量。

⑷ 實現複雜的非標準的數據庫相關完整性規則。觸發器可以對數據庫中相關的表進行連環更新。

⑸ 同步實時地複製表中的數據。

⑹ 自動計算數據值。如果數據的值達到了一定的要求,則進行特定的處理。例如,某本書的庫存低於一定指標,則立刻向圖書管理員發出警告數據。

2 創建觸發器

隻有具備super權限的MySQL用戶才能執行創建觸發器的命令。創建觸發器命令格式如下:

CREATE TRIGGER trigger_name BEFORE|AFTER