MySQL 插入后触发器

17 Mar 2025 | 4 分钟阅读

MySQL 中的插入后触发器(After Insert Trigger)在表上发生插入事件时自动调用。在本文中,我们将学习如何创建插入后触发器,包括其语法和示例。

语法

以下是创建 MySQL 中插入后触发器的语法:

插入后触发器的语法参数可以解释如下:

  • 首先,我们将指定我们要创建的触发器名称。它应该在模式内是唯一的。
  • 第二,我们将指定触发器操作时间,应为 AFTER INSERT 子句来调用触发器。
  • 第三,我们将指定表名,触发器与之关联。它必须写在 ON 关键字之后。如果未指定表名,则不会创建触发器。
  • 最后,我们将指定触发器主体,其中包含一个或多个语句,在触发器被激活时执行。

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

限制

  • 在插入后触发器中,我们可以访问 NEW 值,但无法更改它们
  • 我们无法访问 OLD 值。如果我们尝试访问 OLD 值,我们将收到错误,因为在 INSERT 触发器中没有 OLD 值。
  • 我们无法在 VIEW 上创建插入后触发器。

插入后触发器示例

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

假设我们已按如下方式创建了一个名为“student_info”的表:

接下来,我们将插入一些记录到此表中,然后执行 SELECT 语句以查看表数据,如下所示:

MySQL AFTER INSERT Trigger

再次,我们将创建一个名为 "student_detail" 的新表,如下所示:

接下来,我们将使用 CREATE TRIGGER 语句在 student_info 表上创建一个名为 after_insert_details 的触发器。此触发器将在对表执行插入操作后触发。

如果触发器创建成功,我们将得到如下输出:

MySQL AFTER INSERT Trigger

如何调用插入后触发器?

我们可以使用以下语句来调用上面创建的触发器:

更新查询执行后已修改的表是 student_detail。我们可以使用 SELECT 语句进行验证,如下所示:


MySQL AFTER INSERT Trigger

在此输出中,我们可以看到,当向 student_info 表插入值时,student_detail 表将通过调用触发器自动填充记录。

如何在 MySQL Workbench 中创建插入后触发器?

要使用此工具创建插入后触发器,我们首先需要启动 MySQL Workbench 并使用我们之前创建的用户名和密码登录。我们将看到如下屏幕:

MySQL AFTER INSERT Trigger

现在请执行以下步骤来创建插入后触发器:

1. 转到导航选项卡,然后单击包含 MySQL 服务器中所有可用数据库的Schema 菜单

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

MySQL AFTER INSERT Trigger

3. 展开 Tables 子菜单并选择要为其创建触发器的表。选择表后,右键单击选定的表(例如,mystudentdb),然后单击 Alter Table 选项。请参阅下图:

MySQL AFTER INSERT Trigger

4. 单击 Alter Table 选项后,将出现如下屏幕:

MySQL AFTER INSERT Trigger

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

MySQL AFTER INSERT Trigger

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

MySQL AFTER INSERT Trigger

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

MySQL AFTER INSERT Trigger

8. 如果我们查看 schema 菜单,可以在 student_info 表下看到 AFTER_INSERT_detail 触发器,如下所示:

MySQL AFTER INSERT Trigger