触发器 (trigger) 是一种数据库中,在对数据库操作时,先行拦截并处理的部件,它大部份会设置在数据表中,作为强制执行特定动作的程序,因此又称为 DML Trigger。
触发器的好处有:
- 可在写入数据表前,强制检验或转换资料。
- 觸發程序發生錯誤時,異動的結果會被撤銷。
- 部份資料庫管理系統可以針對資料定義語言使用觸發程序,稱為 DDL Trigger。
- 可依照特定的情況,替換異動的指令 (INSTEAD OF)。
DML 觸發程序可以分為數種:
- BEFORE: 在異動發生前執行。
- AFTER: 在異動發生後執行。
- INSTEAD OF: 替换。
SQL Server 的 DML 觸發程序可利用下列語法建立[1]:
CREATE TRIGGER reminder2 ON Sales.Customer AFTER INSERT, UPDATE, DELETE AS EXEC msdb.dbo.sp_send_dbmail @profile_name = 'AdventureWorks Administrator', @recipients = 'danw@Adventure-Works.com', @body = 'Don''t forget to print a report for the sales force.', @subject = 'Reminder';