对某个表进行【增/删/改】操做的先后若是但愿触发某个特定的行为时,能够使用触发器,触发器用于定制用户对表的行进行【增/删/改】先后的行为。html
触发器能放在执行 sql 语句的6个关键位置。sql
格式:ide
操做类型及语法:ui
# 插入前 CREATE TRIGGER tri_before_insert_tb1 BEFORE INSERT ON tb1 FOR EACH ROW BEGIN ... END # 插入后 CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN ... END # 删除前 CREATE TRIGGER tri_before_delete_tb1 BEFORE DELETE ON tb1 FOR EACH ROW BEGIN ... END # 删除后 CREATE TRIGGER tri_after_delete_tb1 AFTER DELETE ON tb1 FOR EACH ROW BEGIN ... END # 更新前 CREATE TRIGGER tri_before_update_tb1 BEFORE UPDATE ON tb1 FOR EACH ROW BEGIN ... END # 更新后 CREATE TRIGGER tri_after_update_tb1 AFTER UPDATE ON tb1 FOR EACH ROW BEGIN ... END
例子:spa
delimiter // CREATE TRIGGER tri_after_insert_tb1 AFTER INSERT ON tb1 FOR EACH ROW BEGIN IF NEW. num = 666 THEN INSERT INTO tb2 (NAME) VALUES ('666'), ('666') ; ELSEIF NEW. num = 555 THEN INSERT INTO tb2 (NAME) VALUES ('555'), ('555') ; END IF; END// delimiter ;
说明:code
表示当对 tb1 表进行数据 插入后 操做:htm
一、若是插入的num值为 666 ,则给对应的 tb2 表增长 两项 666 的数据。blog
二、若是 tb1 表插入的num数据为 555,则给 tb2 表增长两项 555 的数据。ip
特别的:get
DROP TRIGGER tri_after_insert_tb1;
触发器没法由用户直接调用,而是由对表的【增/删/改】操做被动引起的。