一、触发器的定义:
触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,会激活促发其执行相应的操作。
SQL触发器,是一种特殊类型的存储过程,不由用户直接调用。他可以查询其它表,并可以包含复杂的Transact-SQL语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动回滚。常常用于强制业务规则和数据完整性。
二 、触发器分类:
1、DML( 数据操纵语言 Data Manipulation Language)触发器:是指触发器在数据库中发生 DML 事件时将启用。DML事件是指在表或视图中对数据进行的 insert、update、delete 操作的语句。
2、DDL(数据定义语言 Data Definition Language)触发器:是指当服务器或数据库中发生 DDL 事件时将启用。DDL事件是指在表或索引中的 create、alter、drop 操作语句。
3、登陆触发器:是指当用户登录 SQL SERVER 实例建立会话时触发。如果身份验证失败,登录触发器不会触发。
INSERT型触发器:插入某一行时激活触发器,通过 INSERT、LOAD DATA、REPLACE语句触发;
UPDATE型触发器:更改某一行时激活触发器,通过UPDATE语句触发;
DELETE型触发器:删除某一行时激活触发器,通过DELETE、REPLACE语句触发。
三、创建与使用触发器:
创建触发器的语法:
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOREACH ROW trigger_stmt:
trigger_name:触发器的名称。
tirgger_time:触发时机,为BEFORE或者AFTER。
trigger_event:触发事件,为INSERT、DELETE或者UPDATE。
tb_name:表示建立触发器的表名,在哪张表上建立触发器。
trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句。
FOR EACH ROW表示任何一条记录上的操作满足触发事件都会触发该触发器。
创建有多个执行语句的触发器:
create trigger 触发器名 before|after 触发事件 on 表名 foreach row
begin
执行语句
end
四、查看触发器
4.1 SHOWTRIGGERS 语句查看触发器信息
SHOW TRIGGERS;
4.2 在 triggers 表中查看触发器信息
DROP TRIGGER trig_book2 ;
====================
创建数据库触发器步骤:https://jingyan.baidu.com/article/20095761b33758cb0621b44f.html
更深入了解:
https://blog.51cto.com/9291927/2095105