MySQL数据库-触发器

目录

 

1. 概念

2. 创建触发器

3. 查看触发器

4. 删除触发器

总结:


1. 概念

触发器是一段程序,可以理解为一种特殊的存储过程,听这个名字就知道,当某个条件发生时,就会触发这个触发器执行,就像地雷一样,事先定义好触发条件,触发器的执行语句,然后一旦该条件发生,触发器就执行。

2. 创建触发器

CREATE TRIGGER 触发器名  触发时机  触发事件  ON  表名  FOR EACH  ROW  一条执行语句;

触发时机:BEFORE 或者  AFTER。

触发事件:INSERT、UPDATE、DELETE。

触发器是建立在一张表上的,只针对这张表的触发。

触发执行多条语句:

CREATE TRIGGER 触发器名  触发时机  触发事件  ON  表名  FOR EACH  ROW  BEGIN 多条执行语句 END;

NEW 和 OLD 关键字:在 INSERT 型触发器中,NEW 用来表示将要(BEFORE)或已经(AFTER)插入的新数据; 在 UPDATE 型触发器中,OLD 用来表示将要或已经被修改的原数据,NEW 用来表示将要或已经修改为的新数据; 在 DELETE 型触发器中,OLD 用来表示将要或已经被删除的原数据。对于INSERT语句,只有NEW是合法的;对于DELETE语句,只有OLD才合法;而UPDATE语句可以在和NEW以及OLD同时使用。FOR EACH ROW子句通知触发器每隔一行执行一次动作。

举个例子:

CREATE TABLE student(
    id INT PRIMARY KEY,
    `name` VARCHAR(20),
    age SMALLINT
);

SET @sum = 0; 

CREATE TRIGGER trigger_student_i BEFORE INSERT ON student 
FOR EACH ROW SET @sum = @sum + NEW.age;

SHOW TRIGGERS;

INSERT INTO student VALUES(1, 'Bob', 24), (2, 'Alice', 23);

SELECT @sum;

DROP TRIGGER trigger_student_i;

3. 查看触发器

SHOW  TRIGGERS; 查看所有的触发器。

在triggers表中查看触发器信息:SELECT * FROM INFORMATION_SCHEMA, TRIGGERS WHERE  查询条件;

查询条件主要是利用触发器名去查询,比如 TRIGGER_NAME='触发器名',用LIKE去模糊匹配。

4. 删除触发器

DROP  TRIGGER  [数据库名.]  触发器名;

如果不指定数据库名,默认是删除当前数据库的触发器。

总结:

对于相同的表,相同事件的触发器不能重复创建,比如student表已经有一个 AFTER UPDATE 触发器了,名为hehe,你就不能再去创建一个AFTER  UPDATE触发器,即使触发器名不一样也不行。

及时删除不再需要的触发器,如果不及时删除的话,只要触发条件达到了,它总会执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值