MySQL BEFORE DELETE Trigger17 Mar 2025 | 4 分钟阅读 MySQL 中的 BEFORE DELETE 触发器会在每次对表执行 DELETE 操作时自动调用。在本文中,我们将学习如何创建 BEFORE DELETE 触发器,包括其语法和示例。 语法以下是在 MySQL 中创建 BEFORE DELETE 触发器的语法 BEFORE DELETE 触发器语法参数可解释如下
如果要执行多个语句,我们将使用 BEGIN END 块,其中包含一组查询来定义触发器的逻辑。请参阅以下语法 限制
BEFORE DELETE 触发器示例让我们通过一个示例了解如何使用 MySQL 的 CREATE TRIGGER 语句来创建 BEFORE DELETE 触发器。 假设我们已经创建了一个名为 salaries 的表来存储员工的薪资信息,如下所示 接下来,我们将使用以下语句将一些记录插入到此表中 执行 SELECT 查询以查看表数据。 ![]() 第三,我们将创建另一个名为 salary_archives 的表,该表保留已删除薪资的信息。 然后,我们将创建一个 BEFORE DELETE 触发器,在从 salaries 表中删除一行之前,将新记录插入到 salary_archives 表中。 ![]() 在此触发器中,我们首先指定了触发器名称 before_delete_salaries。然后,指定了触发事件。第三,我们指定了触发器关联的表名。最后,我们在触发器主体中编写了触发器逻辑,将已删除的行插入到 salary_archives 表中。 如何调用 BEFORE DELETE 触发器?让我们测试上面创建的 BEFORE DELETE 触发器以及如何调用它们。所以,首先,我们将从 salaries 表中删除一行 第二,我们将查询 salary_archives 表中的数据,以使用 select 语句验证上面创建的触发器是否已调用 执行语句后,我们可以看到触发器已成功调用,并将新记录插入到 salary_archives 表中。 ![]() 第三,我们将删除 salaries 表中的所有行 最后,我们将再次查询 salary_archives 表中的数据。由于 DELETE 语句从 salaries 表中删除了四条记录,因此触发器被调用了四次。请参阅下面的输出 ![]() 如何在 MySQL Workbench 中创建 BEFORE DELETE 触发器?要使用 MySQL Workbench 创建 BEFORE DELETE 触发器,我们首先需要启动它,然后使用我们之前创建的用户名和密码登录。我们将看到如下屏幕 ![]() 现在执行以下步骤来创建 BEFORE DELETE 触发器 1. 转到导航选项卡,然后单击包含 MySQL 服务器中所有可用数据库的模式菜单。 2. 选择数据库(例如,employeedb),然后双击它。它将显示包含 Tables、Views、Functions 和 Stored Procedures 的 **子菜单**。请参阅下面的屏幕。 ![]() 3. 展开 **Tables 子菜单** 并选择要在其上创建 触发器 的表。选择表后,右键单击所选表(例如,salaries),然后单击 **Alter Table** 选项。请参阅下图 ![]() 4. 单击 Alter Table 选项会显示如下屏幕 ![]() 5. 现在,单击前面部分红色矩形框中显示的 **Trigger 选项卡**,然后选择 Timing/Event BEFORE DELETE。我们会注意到有一个 (+) 图标按钮用于添加触发器。单击该按钮,我们将根据选择的 Timing/Event 获得默认的触发器代码 ![]() 6. 现在,完成触发器代码,再次进行审核,如果没有发现错误,请单击应用按钮。 ![]() 7. 单击 Apply 按钮后,单击 **Finish** 按钮完成。 ![]() 8. 如果查看 schema 菜单,我们将在 salaries 表下看到触发器 **salaries_before_trigger**,如下所示 ![]() |
我们请求您订阅我们的新闻通讯以获取最新更新。