|名词定义|
触发器(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-ver15
DML 触发器 https://docs.microsoft.com/zh-cn/sql/relational-databases/triggers/dml-triggers?view=sql-server-ver15