MySQL - 更新后触发

MySQL - 更新后触发 首页 / MySQL入门教程 / MySQL - 更新后触发

每当在与触发器关联的表上触发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触发器语法的参数:

  • 首先,将指定要创建的触发名称(trigger_name)。它在架构中应该是唯一的。
  • 第二,将指定触发动作时间(AFTER UPDATE),该时间应为"更新后"。在表的每一行更改发生后,将触发此触发器。
  • 第三,将指定与触发器关联的表名(table_name)。它必须写在 ON 之后。如果未指定表名,则触发器将不存在。
  • 最后,将指定触发主体(trigger_body),其中包含在触发触发器时执行的语句。

如果要执行多个语句,无涯教程将使用 BEGIN END 块,该块包含一组SQL查询,以定义触发。请参见以下语法:

DELIMITER $$ 
CREATE TRIGGER trigger_name AFTER UPDATE
ON table_name FOR EACH ROW
BEGIN
   variable declarations
   trigger code
END$$
DELIMITER ;

限制条件

  • 可以访问OLD行,但是无法更新它们。
  • 可以访问NEW行,但不能更新它们。
  • 无法在 VIEW 上创建AFTER UPDATE触发器。

更新后触发示例

让通过示例了解如何使用 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 查询以查看表数据。

MySQL AFTER UPDATE TRIGGER

第三,将创建另一个名为 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 ;
MySQL AFTER UPDATE TRIGGER

在此触发器中,首先指定了触发器名称 after_update_studentsInfo 。然后,指定触发事件。第三,指定了与触发器关联的表名。最后,无涯教程在触发器主体内部编写了触发器逻辑,该逻辑在" students"表中执行更新,并将日志信息保留在" students_log"表中。

如何调用AFTER UPDATE触发器?

首先,将使用以下调用上述创建的触发器的语句来更新"学生"表:

无涯教程网

链接:https://www.learnfk.comhttps://www.learnfk.com/mysql/mysql-after-update-trigger.html

来源:LearnFk无涯教程网

mysql> UPDATE students SET class = class + 1;

接下来,将从 students students_log表中查询数据。可以看到查询执行后表已更新。请参见以下输出:

MySQL AFTER UPDATE TRIGGER

再次,无涯教程将从students_log表中查询保留当前用户ID和有关当前更新的描述的数据。请参见以下输出:

MySQL AFTER UPDATE TRIGGER

祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)

技术教程推荐

朱赟的技术管理课 -〔朱赟〕

邱岳的产品实战 -〔邱岳〕

后端技术面试 38 讲 -〔李智慧〕

摄影入门课 -〔小麥〕

TensorFlow 2项目进阶实战 -〔彭靖田〕

说透数字化转型 -〔付晓岩〕

React Native 新架构实战课 -〔蒋宏伟〕

云计算的必修小课 -〔吕蕴偲〕

Python实战 · 从0到1搭建直播视频平台 -〔Barry〕

好记忆不如烂笔头。留下您的足迹吧 :)