MySql教程
MySql用户管理
MySQL数据库
MySql表格和视图
MySQL查询
MySQL索引
MySQL子句
MySQL授权
MySql控制流
MySQL条件
MySQL连接
MySQL键
MySQL触发器
MySQL聚合函数
MySQL常用
MySQL正则表达式
MySql差异性

MySQL AFTER UPDATE触发器

每当与触发器关联的表上触发UPDATE事件时,都会自动调用MySQL中的AFTER UPDATE触发器。在本文中,我们将学习如何使用其语法和示例创建AFTER UPDATE触发器。

语法

以下是用于创建AFTER UPDATE触发器的语法 更新后在MySQL中触发:
CREATE TRIGGER trigger_name 
AFTER UPDATE
ON table_name for EACH ROW
trigger_body ;
我们可以如下解释AFTER UPDATE触发器语法的参数:
第一,我们将指定要创建的触发名称。它在架构中应该是唯一的。 第二,我们将指定触发动作时间,该时间应为"更新后"。在表的每一行更改发生后,将触发此触发器。 第三,我们将指定与触发器关联的表名。它必须写在 ON 之后。如果未指定表名,则触发器将不存在。 最后,我们将指定触发主体,其中包含在触发触发器时执行的语句。
如果要执行多个语句,我们将使用 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触发器。

AFTER UPDATE触发器示例

让我们了解如何使用 CREATE TRIGGER语句创建AFTER UPDATE触发器
假设我们已经创建了一个名为 students 的表来存储学生的信息,如下所示:
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@lidihuo.com'), 
('Bob', 7, 'bob@lidihuo.com'), 
('Steven', 8, 'steven@lidihuo.com'), 
('Alexandar', 7, 'alexandar@lidihuo.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触发器?

首先,我们将使用以下调用上面创建的触发器的语句来更新"学生"表:
mysql> UPDATE students SET class = class + 1;
接下来,我们将查询 students students_log表中的数据。我们可以看到查询执行后表已经更新。参见以下输出:
MySQL AFTER UPDATE TRIGGER
同样,我们将从以下位置查询数据保留当前用户ID和有关当前更新的说明的students_log表。参见以下输出:
MySQL AFTER UPDATE TRIGGER

如何要在MySQL工作台中创建AFTER UPDATE触发器?

要在工作台中创建AFTER UPDATE触发器,我们首先 启动 MySQL Workbench ,然后使用用户名和密码登录。我们将获得如下所示的UI:
MySQL AFTER UPDATE TRIGGER
现在请执行以下操作创建AFTER UPDATE触发器的步骤:
1、转到 导航标签,然后单击 Schema 菜单。它将显示 MySQL 数据库服务器中所有可用的数据库。
MySQL AFTER UPDATE TRIGGER
2、选择数据库(例如, mystudentdb )。然后,双击所选的架构。它显示 子菜单,其中包含表,视图,函数和存储过程。参见下面的屏幕。
MySQL AFTER UPDATE TRIGGER
3、展开 表格子菜单,然后选择要在其上创建触发器的表格。然后,右键单击所选表格(例如, ,学生),然后单击 更改表格选项。参见下图:
MySQL AFTER UPDATE TRIGGER
4、单击 Alter Table 选项,将显示以下屏幕:
MySQL AFTER UPDATE TRIGGER
5、现在,单击上一节的 红色矩形框中显示的 Trigger 标签,然后选择 定时/事件更新后。我们将注意到,有一个 (+)图标按钮可添加触发器。单击该按钮,我们将基于选择时间/事件在触发器上获得默认代码:
MySQL更新后触发
6、现在,完成触发代码,再次检查它们,如果没有发现错误,请单击 应用按钮。
MySQL AFTER UPDATE TRIGGER
7、单击"应用"按钮后,单击 完成按钮以完成该过程。
MySQL AFTER UPDATE TRIGGER
8、如果查看架构菜单,则可以在" 学生" 表下看到 student_update_trigger ,如下所示:
MySQL AFTER UPDATE TRIGGER
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4