触发器 (数据库)

维基百科,自由的百科全书
跳转至: 导航搜索

觸發程序英语trigger)是在資料庫中,在执行對資料有異動的動作時,先行攔截並處理的一種資料庫物件,它大部份會設在資料表中,作為強制執行特定動作的程序,因此又稱為数据操纵语言(DML)触发器。

觸發程式的好處有:

  • 可在寫入資料表前,強制檢驗或轉換資料。
  • 觸發程序發生錯誤時,異動的結果會被撤銷。
  • 部份資料庫管理系統可以針對資料定義語言(DDL)使用觸發程序,稱為DDL触发器。
  • 可依照特定的情況,替換異動的指令 (INSTEAD OF)。

種類[编辑]

DML 觸發程序可以分為數種:

  • BEFORE: 在異動發生前執行。
  • AFTER: 在異動發生後執行。
  • INSTEAD OF: 替換異動的指令。

DDL 觸發程序範圍就相當大,對資料庫物件的異動大多都可捕捉,視資料庫管理系統而定。

語法[编辑]

SQL Server 的 DML 觸發程序可利用下列語法建立[1]

DELIMITER |
CREATE TRIGGER `<databaseName>`.`<triggerName>`
< [ BEFORE | AFTER ] > < [ INSERT | UPDATE | DELETE ] >
ON [dbo]<tableName> //dbo(所有者)
FOR EACH ROW
BEGIN
...
 
END |

參考資料[编辑]

数据库管理系统(DBMS) (查看 · 讨论 · 编辑)

概念
数据库 · 数据模型 · 数据库存储结构英语Database storage structures · 关系 (数据库) · 关系模型 · 分布式数据库 · ACID ( 原子性英语Atomicity (database systems) · 一致性 · 隔離性 · 持久性英语Durability (database systems) ) · Null值
关系数据库 · 关系模型 · 数据库规范化 · 數據庫完整性 · 實體完整性 · 參照完整性英语Referential integrity · 关系数据库管理系统 
主键 · 外键 · 代理键 · 超键 · 候选键 

数据库组件
触发器 · 视图 · 数据库表 · 指标 (数据库) · 事务日志英语Transaction log · 数据库事务 · 并发控制 · 乐观锁 · 悲观锁 · 数据库索引 
存储程序 · 資料庫分割

SQL
分类: 数据查询语言 (DQL) - 資料定義語言 (DDL) - 資料操縱語言 (DML) - 資料控制語言 (DCL)
指令:SELECT · INSERT · UPDATE · MERGE · DELETE · JOIN · UNION · CREATE · DROP · Begin work · COMMIT · ROLLBACK · TRUNCATE · ALTER
安全: SQL資料隱碼攻擊 · 參數化查詢

数据库管理系统的实现

实现类型
关系数据库 · 檔案型資料庫 · Deductive · 維度化資料庫 · 階層式 · 圖形資料庫 · 对象数据库 · 物件關聯式資料庫 · Temporal · XML資料庫

数据库产品
对象型 (对比) · 关系型 (对比)

数据库组件
数据查询语言 · 查詢最佳化器 · 查詢計畫 · 嵌入式SQL · ODBC · JDBC · OLE DB