触发器
- 触发器:是一种完整性控制机制。包括:实体完整性(主键)、参照完整性(外键)、空值约束、默认约束(default)。
- 当数据库系统执行 insert | delete | update 操作,会自动激活触发器,触发器体内语句得以执行,实现对应的功能。
- 触发器是特殊的存贮过程。
- 同一个表的同一个操作 insert 基于同一个时间(after | before)的触发器只能定义一个。
- 使用触发器来实现完整性控制会使数据库性能大大降低(使用存贮过程也会),所以尽可能通过后台开发工具来实现业务逻辑。
- insert | delete | update 称为触发事件。
触发器的定义
create trigger 触发器名 after | before insert | delete | update on 表名 for each row
begin
触发器体;
end;
例1、向departments表中插入一个新部门时,同时向departments_log表中插入一条新纪录
select * from departments;
-- 建立日志表:记录哪个表什么时间做了插入操作
drop table if exists tlogger;
create table tlogger(
logId int(6) auto_increment PRIMARY KEY,
tableName varchar(20),
logTime datetime
);
select * from tlogger;
drop trigger if exists tri_loggertime_depts;
create trigger tri_loggertime_depts before insert on departments for each row
begin
insert into tlogger(tableName,logTime) values('departments',NOW());
end;
drop trigger if exists tri_loggertime_regions;
create trigger tri_loggertime_regions before insert on regions for each row
begin
insert into tlogger(tableName,logTime) values('regions',NOW());
end;
select now();
delete from tlogger;
insert into departments VALUES(330,'Test',118,1800);
insert into regions VALUES