触发器
触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程。
为什么使用触发器
触发器是被指定关联到一个表的数据库对象,当一个表的特定事件发生时,它将会被激活。触发器的特点是某条MySQL语句在特定事件发生时自动执行。引发触发器执行的时间:
- 增加一条学生记录,会自动检查年龄是否符合范围要求。
- 每当删除一条学生信息时,自动删除其成绩表上的对应记录。
- 每当删除一条记录时,在数据库存档表中保留一个备份副本。
触发器与表关系密切,主要用于保护表中数据。特别是当有多个表具有一定的相互联系的时候,触发器能够让不同的表保持数据一致性。
创建触发器
CREATE <触发器名> <BEFORE | AFTER>
<INSERT | UPDATE | DELETE >
ON <表名> FOR EACH Row<触发器主体>
创建BEFORE触发器
CREATE TRIGGER SumOfSalary
BEFORE INSERT ON tb_emp8
FOR EACH ROW
SET @sum=@sum+NEW.salary;
SET @sum=0;
INSERT INTO tb_emp8
VAlUES(1,'A',1,1000),(2,'B',1,500);
SELECT @sum;
创建AFTER触发器
CREATE TRIGGER double_salary
AFTER INSERT ON tb_emp6
FOR EACH ROW
INSERT ON tb_emp7
VALUES (NEW.id,NEW.name,deptId,2*NEW.salary);
INSERT INTO tb_emp6
VALUES (1,'A',1,1000),(2,'B',1.'500');
SELECT * FROM tb_emp6;
修改和删除触发器
DROP TRIGGER [IF EXISTS] [数据库名] <触发器名>
DROP TRIGGER double_salary;