分类:
- 数据库级触发器
- 表级触发器
- 行级触发器
- 增删改触发器(根据触发时机)
场景1:解除外键约束
一般来说,插表先插主表,删表先删从表(见:https://www.cnblogs.com/sabertobih/p/13966709.html)
外键约束的创建限制:
>>>
如何用触发器实现:插表和删表没有外键的先后限制?
------------------------ drop table if exists userinfos; drop table if exists uss; create table userinfos(userid int primary key,uname varchar(20)); create table uss(userid int primary key,uname varchar(20)); insert into userinfos values('1','zs'); insert into userinfos values('2','df'); insert into userinfos values('3','hh'); insert into uss values('1','11'); insert into uss values('2','22'); insert into uss values('3','33'); alter table userinfos add constraint CONSTRAINT_D foreign key (userid) references uss(userid); --------------------- ## 删表可以先主表了 create trigger trg2 before delete on uss for each row delete from userinfos where userid=old.userid ## 插表可以先从表了 create trigger trg3 before insert on userinfos for each row insert into uss values(new.userid,new.uname);
场景2:实现对表的监控
基于触发器的CDC:原始数据表+insert触发器,可以在另外一张表中记录对原表的增删改查操作
事件机制
影响性能:因为数据库中直接多了一张表!所以很少使用此方法。