MySQL AFTER DELETE Trigger

17 Mar 2025 | 4 分钟阅读

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

语法

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

AFTER DELETE 触发器语法参数可解释如下

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

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

限制

  • 我们可以访问 OLD 行,但不能在 AFTER DELETE 触发器中更新它们。
  • 我们无法访问 NEW 行。这是因为不存在 NEW 行。
  • 我们不能在 VIEW 上创建 AFTER DELETE 触发器。

AFTER DELETE 触发器示例

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

假设我们创建了一个名为 salaries 的表来存储员工的薪资信息,如下所示

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

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

MySQL AFTER DELETE Trigger

第三,我们将创建另一个名为 total_salary_budget 的表,该表存储 salaries 表中的薪资信息。

第四,我们将使用 SUM() 函数,该函数返回 salaries 表中的总薪资,并将此信息保存在 total_salary_budget 表中

执行 SELECT 语句以验证表

MySQL AFTER DELETE Trigger

然后,我们将创建一个 AFTER DELETE 触发器,在从 salaries 表删除一行后,更新 total_salary_budget 表中的总薪资。


MySQL AFTER DELETE Trigger

在此触发器中,我们首先指定了触发器名称 after_delete_salaries。然后,指定触发事件。第三,我们指定了触发器关联的表名。最后,我们在触发器体内编写了触发器逻辑,该逻辑在从 salaries 表删除一行后更新 total_salary_budget 表中的总薪资。

如何调用 AFTER DELETE 触发器?

首先,我们将使用以下语句从 salaries 表中删除一个薪资,以调用上述创建的触发器

接下来,我们将查询 total_salary_budget 表中的数据。我们可以看到该表在查询执行后已被修改。请参阅以下输出


MySQL AFTER DELETE Trigger

在输出中,我们可以看到已删除的薪资减少了总预算。

第三,我们将清除 salaries 表中的所有数据

再次,我们将查询 total_salary_budget 表中的数据。我们可以看到触发器在查询执行后将表更新为零。请参阅以下输出

MySQL AFTER DELETE Trigger

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

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

MySQL AFTER DELETE Trigger

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

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

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

MySQL AFTER DELETE Trigger

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

MySQL AFTER DELETE Trigger

4. 单击修改表选项将显示如下屏幕

MySQL AFTER DELETE Trigger

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

MySQL AFTER DELETE Trigger

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

MySQL AFTER DELETE Trigger

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

MySQL AFTER DELETE Trigger

8. 如果查看模式菜单,我们可以在 salaries 表下看到 salaries_AFTER_DELETE 触发器,如下所示

MySQL AFTER DELETE Trigger
下一个主题MySQL 聚合函数