Tigger 是一個建立在table上的一個特殊程序,這個程序會在特定狀況中被啟動
Tigger有三種類型
DML Tigger | INSERT,UPDATE,DELETE |
DDL Trigger | CREATE,ALTER,DROP |
LOGON Trigger | LOGON |
使用Trigger要考慮到什麼
- Trigger是一個被動回應的機制,Constraints則為較主動的機制,當兩者同時瘥在的時候,Constraints會先被檢查
- 一個table可以有許多個Triggers回應不同的動作
- Trigger中指定的動作需要有足夠的權限
- 在view和Temporary Tables裡不可以建立AFTER Trigger
建立Trigger
- 必須要有足夠的權限
- 不可以包含特定的敘述句
ex. create database , reconfigure之類的命令USE Northwind GO --例1 建立 Trigger --產生測試資料表 select * into employees2 from Employees --建立 Trigger 當 刪除 employees 員工超過一筆以上時, 產生錯誤訊息 Use Northwind GO CREATE TRIGGER Empl_Delete ON Employees2 FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 1 BEGIN RAISERROR('You cannot delete more than one employee at a time.', 16, 1) ROLLBACK TRANSACTION END --測試 delete from employees2 where employeeid >= 1 -- not OK delete from employees2 where employeeid = 1 -- OK
修改和刪除Triggers
修改Trigger
- 改編Trigger的內容不用先刪除原本的
- 可以用來將Trigger暫時disable或enable
ALTER TABLE tablename ENABLE TRIGGER{ALL|triggername} -
USE Northwind ALTER TRIGGER Empl_Delete ON Employees2 FOR DELETE AS IF (SELECT COUNT(*) FROM Deleted) > 6 BEGIN RAISERROR('You cannot delete more than six employees at a time.', 16, 1) ROLLBACK
刪除Trigger
- 使用DROP TRIGGER triggername
Tigger的運作方式
- INSERT TRIGGER
- DELETE TRIGGER
- UPDATE TRIGGER
- INSTEAD OF TRIGGER
- (NESTED) TRIGGERS
- (RECURSIVE) TRIGGERS