每当在与触发器关联的表上触发UPDATE事件时,都会自动调用MySQL中的AFTER UPDATE触发器。在本文中,无涯教程将学习如何使用其语法和示例创建AFTER UPDATE触发器。
以下是在MySQL中创建 AFTER UPDATE 触发器的语法:
CREATE TRIGGER trigger_name AFTER UPDATE ON table_name FOR EACH ROW trigger_body ;
无涯教程可以如下解释AFTER UPDATE触发器语法的参数:
如果要执行多个语句,无涯教程将使用 BEGIN END 块,该块包含一组SQL查询,以定义触发。请参见以下语法:
DELIMITER $$ CREATE TRIGGER trigger_name AFTER UPDATE ON table_name FOR EACH ROW BEGIN variable declarations trigger code END$$ DELIMITER ;
让通过示例了解如何使用 MySQL中的CREATE TRIGGER语句创建AFTER UPDATE触发器。
假设无涯教程已经创建了一个名为学生的表,用于存储学生的信息,如下所示:
mysql> CREATE TABLE students( id int NOT NULL AUTO_INCREMENT, name varchar(45) NOT NULL, class int NOT NULL, email_id varchar(65) NOT NULL, PRIMARY KEY (id) );
接下来,将使用以下语句将一些记录插入该表:
INSERT INTO students (name, class, email_id) VALUES ('Stephen', 6, 'stephen@learnfk.com'), ('Bob', 7, 'bob@learnfk.com'), ('Steven', 8, 'steven@learnfk.com'), ('Alexandar', 7, 'alexandar@learnfk.com');
执行 SELECT 查询以查看表数据。
第三,将创建另一个名为 students_log 的表,该表将更新的信息保留在所选用户中。
mysql> CREATE TABLE students_log( user varchar(45) NOT NULL, descreptions varchar(65) NOT NULL );
然后,无涯教程将创建一个AFTER UPDATE触发器,该触发器将提升下一班的所有学生,即6将是7,7将是8,依此类推。每当对“ students”表中的单行执行更新时,都会在“ students_log”表中插入新行。该表保留当前用户ID和有关当前更新的描述。请参阅下面的触发代码。
DELIMITER $$ CREATE TRIGGER after_update_studentsInfo AFTER UPDATE ON students FOR EACH ROW BEGIN INSERT into students_log VALUES (user(), CONCAT('Update Student Record ', OLD.name, ' Previous Class :', OLD.class, ' Present Class ', NEW.class)); END $$ DELIMITER ;
在此触发器中,首先指定了触发器名称 after_update_studentsInfo 。然后,指定触发事件。第三,指定了与触发器关联的表名。最后,无涯教程在触发器主体内部编写了触发器逻辑,该逻辑在" students"表中执行更新,并将日志信息保留在" students_log"表中。
首先,将使用以下调用上述创建的触发器的语句来更新"学生"表:
链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-after-update-trigger.html
来源:LearnFk无涯教程网
mysql> UPDATE students SET class = class + 1;
接下来,将从 students 和 students_log表中查询数据。可以看到查询执行后表已更新。请参见以下输出:
再次,无涯教程将从students_log表中查询保留当前用户ID和有关当前更新的描述的数据。请参见以下输出:
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)
Python实战 · 从0到1搭建直播视频平台 -〔Barry〕