Blank_Space通过本文主要向大家介绍了mysql,存储,触发器等相关知识,希望本文的分享对您有所帮助
触发器是个特殊的存储过程:当一个预定义的事件发生的时候,被MySQL自动调用
创建触发器
1、创建只有一个执行语句的触发器
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tb1_name FOR EACH ROW trigger_stmt
trigger_time:触发时机,可以指定为before或after
trigger_event:出发事件,包括INSERT、UPDATE和DELETE
tb1_name:建立触发器的表名
trigger_stmt:触发器程序体
2、创建有多个执行语句的触发器
CREATE TRIGGER trigger_name trigger_time trigger_event
ON tb1_name FOR EACH ROW trigger_stmt
trigger_stmt:使用begin和end作为开始与结束
NEW.字段名为触发事件的字段
例:
创建一个counts表,event表
CREATE TABLE counts(id int);
CREATE TABLE event(id int,evt_name varchar(50));
创建一个触发器,向counts表中插入数据后,后向event表中插入数据
CREATE TRIGGER trig_insert AFTER INSERT ON counts
FOR EACH ROW INSERT INTO event VALUES(NEW.id,'after insert');
插入数据
INSERT INTO counts VALUES(1),(2),(3);
查询
SELECT *FROM event;
Output:
+------+--------------+
| id | evt_name |
+------+--------------+
| 1 | after insert |
| 2 | after insert |
| 3 | after insert |
+------+--------------+
查看触发器
1、SHOW TRIGGERS
2、在triggers表中查看触发器信息
SELECT *FROM INFORMATION_SCHEMA.TRIGGERS WHERE condition;
删除触发器
DROP TRIGGER [schema_name.]trigger_name
schema_name:数据库名称,可选。
注意:相同的表,相同的事件只能创建一个触发器;及时删除不必要的触发器