1、什么是触发器
触发器(trigger):触发器是一种特殊的事务可以监视某种数据的操作(insert update delete)并触发相关操作(insert update delete),它是提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发。
2、应用场景
1)向一张表中添加或者删除记录时,需要在相关表中进行同步操作
例如:
1、库存表
2、订单表下一个订单 库存中对于的商品需要减少一个
2)某表的某列数据的值和其他表的中的某些数据有关系
例如:
1、用户表
2、信贷表
用户不停的借款 那么我们需要通知 信贷表是否继续放贷
3)当需要对某张表进行跟踪的时候
例如:
1、订单表
2、后台处理
用户下了订单以后 需要通知 相关人员处理该订单
3、 触发器的优缺点
- 优点
- SQL触发器提供了检查数据完整性的替代方法。
- SQL触发器可以捕获数据库层中业务逻辑中的错误。
- SQL触发器提供了运行计划任务的另一种方法。通过使用SQL触发器,您不必等待运行计划的任务,因为在对表中的数据进行更改之前或之后自动调用触发器。
- SQL触发器对于审核表中数据的更改非常有用。
- 缺点
4、触发器创建语句
CREATE TRIGGER trigger_name trigger_time trigger_event ON tb_name FOR EACH ROW trigger_stmt
trigger_name:触发器的名称
tirgger_time:触发时机,为before或者after
trigger_event:触发事件,为INSERT、DELETE或者UPDATE
tb_name:表示建立触发器的表名,就是在哪张表上建立触发器
trigger_stmt:触发器的程序体,可以是一条SQL语句或者是用BEGIN和END包含的多条语句
create trigger + 触发器名称
after/before(触发时间)
insert/update/delete(监视事件)
on 表名(监视地址)
for each row(触发器的程序体)
begin
sql1;
...
sqlN;
end
删除触发器:
Drop trigger 触发器名称
5、编程实例
1、为student的班级id列增加外键约束
ALTER TABLE xmcc_student ADD CONSTRAINT cid_key FOREIGN KEY(s_cid)
REFERENCES xmcc_class(c_id);
2、现在有了外键约束,如果我们删除其中.net班级,因为外键存在无法删除
3、使用触发器,当删除某个班级的时候触发修改当前班级学生的班级id为null,
#创建触发器来保证数据的完整性
CREATE TRIGGER trigger_test #触发器名称为trigger_test
BEFORE DELETE #在删除前
ON xmcc_class FOR EACH ROW #对xmcc_class每一行
UPDATE xmcc_student SET #修改xmcc_student
#old表示删除前的行数据 如果是修改的old表示修改前 new表示修改后
s_cid=NULL WHERE s_cid=old.c_id
4、查看结果