|名詞定義|
觸發器(Trigger)是SQL Server、Oracle等資料庫管理系統提供給資料庫管理者或者開發人員等來保證資料完整性的一種方法,它是與表事件相關的特殊的存儲過程,它的執行不是由程式調用,也不是手工啟動,而是由事件來觸發,比如當對一個表進行操作(INSERT、UPDATE 或 DELETE)時就會激活它執行。
| 發展曆程 |
1989年ANSI SQL标準(1989) 提出觸發器的标準化。
1992年ANSI SQL标準(1992) 提出SQL的商業化标準。
1998年—SQL Server 7.0釋出,SQL Server 7.0開始進軍企業級資料庫市場,觸發器得到很好的使用。
2000年—SQL Server 2000釋出。
2005年—SQL Server 2005釋出,增強了T-SQL語言,優化了觸發器的使用。
2008年—SQL Server 2008釋出。
目前Oracle、Hadoop、Hbase、MySQL等所有主流資料庫最新版本都支援觸發器。
| 技術特點 |
觸發器可用于強制業務規則和資料完整性、查詢其他表并包括複雜SQL 語句。将觸發器和觸發它的語句作為可在觸發器内復原的單個事務對待。 如果檢測到錯誤(例如,磁盤空間不足),則整個事務即自動復原。
觸發器也可用于強制引用完整性,以便在多個表中添加、更新或删除行時,保留在這些表之間所定義的關系。然而,強制引用完整性的最好方法是在相關表中定義主鍵和外鍵限制。如果使用資料庫關系圖,則可以在表之間建立關系以自動建立外鍵限制。
觸發器與存儲過程的唯一差別是觸發器不能執行EXECUTE語句調用,而是在使用者執行SQL語句時自動觸發執行。
觸發器類似于限制,因為可以強制實體完整性或域完整性。 一般情況下,實體完整性總應在最低級别上通過索引進行強制,這些索引應是 PRIMARY KEY 和 UNIQUE 限制的一部分,或者是獨立于限制而建立的。 域完整性應通過 CHECK 限制進行強制,而引用完整性(RI) 則應通過 FOREIGN KEY 限制進行強制。當限制支援的功能無法滿足應用程式的功能要求時,觸發器非常有用。
| 相關詞 |
Trigger – 觸發器
RDBMS – 關系資料據庫
IDS -內建資料存儲(Integrated Data Store),這是世界上第一個NDBMS(網狀資料庫管理系統,Network Database Management System),也是第一個資料庫管理系統
Access - 是由微軟釋出的關系資料庫管理系統
MariaDB - 資料庫管理系統是MySQL的一個分支
| 案例展示 |
Oracle – 是甲骨文公司的一種關系資料庫管理系統
SQLServer – 是微軟公司的一種關系資料庫管理系統
MySQL -原本是一個開放源代碼的關系資料庫管理系統,原開發者為瑞典的MySQL AB公司,2009年甲骨文公司收購Sun公司,MySQL成為Oracle旗下産品
PostgreSQL - 是自由的對象-關系型資料庫伺服器
DB2 - 是美國IBM公司發展的一套關系型資料庫管理系統
Hive - 是一個建立在Hadoop架構之上的資料倉庫
|資料來源|
PostgreSQL Triggers
https://www.postgresqltutorial.com/postgresql-triggers/周志逵等.資料庫系統原理.北京:清華大學出版社,2010
DDL 觸發器
https://docs.microsoft.com/zh-cn/sql/relational-databases/triggers/ddl-triggers?view=sql-server-ver15DML 觸發器
https://docs.microsoft.com/zh-cn/sql/relational-databases/triggers/dml-triggers?view=sql-server-ver15