MySQL UPDATE 后触发器

17 Mar 2025 | 4 分钟阅读

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

语法

以下是在 MySQL 中创建 AFTER UPDATE 触发器的语法

我们可以如下解释 AFTER UPDATE 触发器语法的参数

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

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

限制

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

AFTER UPDATE 触发器示例

让我们通过一个示例来了解如何使用 MySQL 中的 CREATE TRIGGER 语句创建 AFTER UPDATE 触发器。

假设我们创建了一个名为 students 的表来存储学生信息,如下所示

接下来,我们将使用以下语句将一些记录插入到此表中

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

MySQL AFTER UPDATE TRIGGER

第三,我们将创建另一个名为 students_log 的表,该表将存储选定用户已更新的信息。

然后,我们将创建一个 AFTER UPDATE 触发器,该触发器将所有学生提升到下一个班级,即 6 将变成 7,7 将变成 8,依此类推。每当在 "students" 表的单行上执行更新时,将在 "students_log" 表中插入新行。此表存储当前用户 ID 和有关当前更新的描述。请参阅下面的触发器代码。


MySQL AFTER UPDATE TRIGGER

在此触发器中,我们首先指定了触发器名称 after_update_studentsInfo。然后,指定了触发事件。第三,我们指定了触发器关联的表名。最后,我们在触发器体中编写了触发器逻辑,该逻辑在 "students" 表中执行更新,并将日志信息存储在 "students_log" 表中。

如何调用 AFTER UPDATE 触发器?

首先,我们将使用以下语句更新 "students" 表,这些语句将调用上面创建的触发器

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

MySQL AFTER UPDATE TRIGGER

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

MySQL AFTER UPDATE TRIGGER

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

要在 workbench 中创建 AFTER UPDATE 触发器,我们首先启动 MySQL Workbench 并使用用户名和密码登录。我们将看到如下的 UI

MySQL AFTER UPDATE TRIGGER

现在执行以下步骤来创建 AFTER UPDATE 触发器

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

MySQL AFTER UPDATE TRIGGER

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

MySQL AFTER UPDATE TRIGGER

3. 展开子菜单并选择要创建触发器的表。然后,右键单击选定的表(例如,students),然后单击更改表选项。请参阅下图

MySQL AFTER UPDATE TRIGGER

4. 单击更改表选项后,将出现如下屏幕

MySQL AFTER UPDATE TRIGGER

5. 现在,单击上一节红色矩形框中显示的触发器选项卡,然后选择时序/事件 AFTER UPDATE。我们会注意到有一个(+) 图标按钮用于添加触发器。单击该按钮,根据选择的时序/事件,我们将获得触发器的默认代码

MySQL AFTER UPDATE TRIGGER

6. 现在,完成触发器代码,再次进行审核,如果没有发现错误,请单击应用按钮。

MySQL AFTER UPDATE TRIGGER

7. 单击应用按钮后,单击完成按钮以完成该过程。

MySQL AFTER UPDATE TRIGGER

8. 如果查看模式菜单,我们可以在 "students" 表下看到 student_update_trigger,如下所示

MySQL AFTER UPDATE TRIGGER