MySQL之触发器

概念

触发器(trigger)是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活它执行。

 

创建触发器

  CREATE

  [DEFINER = { user | CURRENT_USER }]

  TRIGGER trigger_name

  trigger_time trigger_event

  ON tbl_name FOR EACH ROW

  trigger_body

  说明:

    trigger_name:触发器的名称

    trigger_time:{ BEFORE | AFTER },表示在事件之前或之后触发

    trigger_event::{ INSERT |UPDATE | DELETE },触发的具体事件

    tbl_name:该触发器作用在表名

示例

创建学生表
CREATE TABLE student_info (
stu_id INT(11) NOT NULL AUTO_INCREMENT,
stu_name VARCHAR(255) DEFAULT NULL,
PRIMARY KEY (stu_id)
);
创建学生数表
CREATE TABLE student_count (
student_count INT(11) DEFAULT 0
);
给学生数表插入默认值0
INSERT INTO student_count VALUES(0);

创建触发器,在向学生表INSERT数据时,学生数增加,DELETE学生时,学生数减少
CREATE TRIGGER trigger_student_count_insert
AFTER INSERT
ON student_info FOR EACH ROW
UPDATE student_count SET student_count=student_count+1;
CREATE TRIGGER trigger_student_count_delete
AFTER DELETE
ON student_info FOR EACH ROW
UPDATE student_count SET student_count=student_count-1;

 

查看触发器

  SHOW TRIGGERS

  查询系统表information_schema.triggers的方式指定查询条件,查看指定的触发器信息。

  mysql> USE information_schema;

  Database changed

  mysql> SELECT * FROM triggers WHERE trigger_name='trigger_student_count_insert';

删除触发器

  DROP TRIGGER trigger_name;

 

原文地址:https://www.cnblogs.com/ysuwangqiang/p/11810757.html