mysql之对触发器的操作

时间:2023-12-24 20:16:55

1. 为什么要使用触发器?

触发器与函数有些类似,都需要声明,执行。但是触发器的执行不是由程序调用,也不是由手工启动,而是由事件来触发,激活,从而实现执行。

当触发DELETE,INSERT,UPDATE语句的时候会触发激活触发器,其他的SQL语句则不会激活触发器。

当处理一些业务逻辑,表的数据发生更改时,能够自动进行一些处理,这时就可以使用触发器处理数据库对象。

触发器的操作包括创建触发器,查看触发器以及删除触发器。

2. 创建触发器

2.1 创建有一条执行语句的触发器

CREATE TRIGGER trigger_name BEFORE | AFTER trigger_event ON table_name FOR EACH    ROW trigger_stmt;

示例如下:

CREATE TRIGGER tri_diary BEFORE INSERT ON t_dept FOR EACH ROW INSERT INTO t_diary VALUES(NULL,'t_dept',NOW());

当向部门表t_dept插入任意一条记录时,就会在插入操作之前向表t_diary中插入当前时间记录。

2.2 创建包含多条执行语句的触发器

CREATE TRIGGER trigger_name BEFORE | AFTER trigger_event ON table_name FOR EACH  ROW BEGIN trigger_stmt END;

示例如下:

DELIMITER $$
CREATE TRIGGER tri_diary BEFORE INSERT ON t_dept FOR EACH ROW BEGIN
INSERT INTO t_diary VALUES(NULL,'t_dept',NOW());
INSERT INTO t_diary VALUES(NULL,'t_dept',NOW());
END
$$
DELIMITER ;

上面示例中,首先通过"DELIMITER $$"语句设置结束符为"$$",然后再关键字BEGIN和END之间编写执行语句列表,最后通过"DELIMITER ;"语句将结束符号还原成默认结束符";"。需要注意的是DELIMITER和&&以及DELIMITER和;之间要留有空格。

3. 查看触发器

3.1 通过SHOW TRIGGERS语句查看触发器

SHOW TRIGGERS会显示所有触发器的一个列表。

3.2 通过查看系统表triggers实现查看触发器。

4. 删除触发器

DROP TRIGGER trigger_name;