MySQL AFTER UPDATE触发器

MySQL AFTER UPDATE触发器

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

  • 首先,我们需要指定要创建的 触发器名称 。它在模式内必须是唯一的。
  • 其次,我们需要指定 触发器动作时间 ,应为AFTER UPDATE。该触发器将在每次对表进行更改时调用。
  • 第三,我们需要指定 触发器关联的表名称 。在 ON 之后必须写出。如果我们没有指定表名称,则触发器将不存在。
  • 最后,我们将指定包含在触发器激活时执行的语句的 触发器主体

如果我们想要执行多个语句,我们将使用包含一组SQL查询的 BEGIN END 块来定义触发器的逻辑。请查看以下语法:

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

限制

  • 我们可以访问旧行,但不能更新它们。
  • 我们可以访问新行,但不能更新它们。
  • 我们不能在一个 视图 上创建AFTER UPDATE触发器。

AFTER UPDATE触发器示例

让我们通过一个示例来了解如何使用MySQL中的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@javatpoint.com'), 
('Bob', 7, 'bob@javatpoint.com'), 
('Steven', 8, 'steven@javatpoint.com'), 
('Alexandar', 7, 'alexandar@javatpoint.com');

执行 SELECT 查询以查看表数据。

MySQL AFTER UPDATE触发器

第三,我们将创建另一张名为 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触发器

在这个触发器中,我们首先指定了触发器的名称 after_update_studentsInfo 。然后,指定触发事件。第三,我们指定了与触发器关联的表名。最后,我们在触发器体内编写触发器逻辑,对“students”表进行更新并将日志信息保存在“students_log”表中。

如何调用AFTER UPDATE触发器?

首先,我们将使用以下语句更新“students”表,以调用上述创建的触发器:

mysql> UPDATE students SET class = class + 1;

接下来,我们将从 studentsstudents_log 表中查询数据。我们可以看到,在查询执行后,表已经被更新。请参考下面的输出:

MySQL AFTER UPDATE触发器

再次,我们将从存储当前用户ID和有关当前更新的描述的students_log表中查询数据。请参见下面的输出:

MySQL AFTER UPDATE触发器

如何在MySQL Workbench中创建AFTER UPDATE触发器?

要在Workbench中创建AFTER UPDATE触发器,首先启动MySQL Workbench并使用用户名和密码登录。我们将获得如下的用户界面:

MySQL AFTER UPDATE触发器

现在,请按照以下步骤创建一个AFTER UPDATE触发器:

1. 转到 导航 选项卡,点击 模式 菜单。它将显示在MySQL数据库服务器中可用的所有数据库。

MySQL AFTER UPDATE触发器

2. 选择数据库(例如, mystudentdb )。然后,双击所选模式。它会显示包含表、视图、函数和存储过程的 子菜单 。请参阅下面的屏幕截图。

MySQL AFTER UPDATE触发器

3. 展开 Tables 子菜单,并选择要创建触发器的表。然后,右键单击所选表格( 例如 ,students),然后单击 Alter Table 选项。请参见下面的图片:

MySQL AFTER UPDATE触发器

4. 点击 ** Alter Table ** 选项将会显示如下页面:

MySQL AFTER UPDATE触发器

5. 现在,点击之前章节中显示的 触发器 选项卡,该选项卡位于 红色矩形框 内,然后选择 时间/事件 AFTER UPDATE。我们会注意到有一个 (+) 图标按钮 用于添加触发器。点击该按钮,我们将在触发器中得到一个基于选择时间/事件的默认代码:

MySQL AFTER UPDATE触发器

6. 现在,完成触发器代码,再次检查它们,如果没有发现错误,请点击 应用 按钮。

MySQL AFTER UPDATE触发器

7. 点击“Apply”按钮后,点击“ 完成 按钮以完成该过程。

MySQL AFTER UPDATE触发器

8. 如果我们查看模式菜单,可以看到在” 学生” 表下面的” student_update_trigger” 如下所示:

MySQL AFTER UPDATE触发器

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程