什么是触发器
触发器用于监视某种情况并触发某种操作,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,而是由事件来触发。例如,当对某张表进行insert、delete、update操作时就会触发执行它。
- 创建触发器语法
CREATE TRIGGER trigger_name trigger_time trigger_event ON table_name FOR EACH ROW trigger_stmt;
//参数说明:
/*
trigger_name:触发器名称
trigger_time:触发时间,取值有before、after
trigger_event:触发事件,取值有insert、update、delete
table_name:触发器监控的表名
trigger_stmt:触发执行的语句,可以使用OLD、NEW来引用变化前后的记录内容
NEW.columnName:获取INSERT触发事件中新插入的数据
OLD.columnName:获取UPDATE和DELETE触发事件中被更新、删除的数据
*/
触发器实战:给新用户发邮件
- 连接数据库,使用student数据库并查看所有的数据表
USE student;
SHOW TABLES;
效果图:
2. 查看user_info和email_info所有记录
SELECT * FROM user_info;
SELECT * FROM email_info;
效果图:
3. 创建触发器
DELIMITER //
CREATE TRIGGER send_email_trigger AFTER INSERT ON user_info FOR EACH ROW
BEGIN
INSERT INTO email_info(email, content, send_time) VALUES(NEW.email, '欢迎!', now());
END
//
DELIMITER ;
效果图:
4. 向user_info表插入一条新纪录
INSERT INTO user_info(id, name, email) VALUES(3, '王五', 'wangwu@qq.com');
效果图:
5. 查看email_info表,此时已自动向新用户发送了一封邮件
SELECT * FROM email_info;
效果图:
6. 移除触发器
DROP TRIGGER send_email_trigger;
效果图:
注:本文是博主MySQL学习的总结,不支持任何商用,转载请注明出处!如果你也对MySQL学习有一定的兴趣和理解,欢迎随时找博主交流~