MySQL DROP Trigger

2025年3月17日 | 阅读 3 分钟

我们可以使用 DROP TRIGGER 语句在 MySQL 中删除/移除触发器。在从表中删除触发器时,您必须非常小心。因为一旦删除了触发器,它就无法恢复。如果找不到触发器,DROP TRIGGER 语句会抛出错误。

MySQL 主要允许我们通过两种方式删除/移除触发器

  1. MySQL 命令行客户端
  2. MySQL Workbench

MySQL 命令行客户端

我们可以使用带有以下语法的 DROP TRIGGER 语句来删除数据库中现有的触发器

参数解释

DROP TRIGGER 语法中使用的参数解释如下

参数描述
Trigger_name这是我们要从数据库服务器中移除的触发器的名称。这是一个必需参数。
Schema_name这是触发器所属的数据库名称。如果跳过此参数,语句将从当前数据库中移除触发器。
IF_EXISTS这是一个可选参数,仅当触发器存在于数据库服务器上时,才会有条件地移除触发器。

如果我们尝试删除不存在的触发器,我们会收到一个错误。但是,如果我们指定了 IF EXISTS 子句,MySQL 会给出一个 NOTE 而不是错误。

需要注意的是,在执行与触发器关联的表的 DROP TRIGGER 语句之前,我们必须拥有 TRIGGER 权限。此外,删除表将自动删除与该表关联的所有触发器。

MySQL DROP Trigger 示例

让我们通过一个例子来看看如何删除与表关联的触发器。所以首先,我们将使用以下语句 显示所选数据库中所有可用的触发器

执行语句后,我们可以看到有两个触发器,名为 before_update_salariessales_info_before_update。请看下图

MySQL DROP Trigger

如果我们想移除 before_update_salaries 触发器,请执行以下语句

这将成功从数据库中删除一个触发器。如果我们再次执行上述语句,它将返回一个错误消息。请看输出

MySQL DROP Trigger

如果我们再次使用 IF EXISTS 子句执行上述语句,它将返回警告消息而不是产生错误。请看输出


MySQL DROP Trigger

在使用 IF EXISTS 时,我们可以执行 SHOW WARNING 语句来生成不存在的触发器的 NOTE。请看输出

MySQL DROP Trigger

如何在 MySQL Workbench 中删除触发器?

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

MySQL DROP Trigger

现在按照以下步骤删除或销毁与表关联的触发器

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

MySQL DROP Trigger

2. 选择数据库(例如,mystudentdb)。然后,双击选定的模式。它会显示包含 Tables、Views、Functions 和 Stored Procedures 的 子菜单。请看下面的屏幕。

MySQL DROP Trigger

3. 展开 Tables 子菜单,然后选择一个触发器已关联的表。再次展开选定的 Table -> Triggers;我们将得到下图

MySQL DROP Trigger

4. 现在,右键单击选定的表,然后选择 Alter Table 选项,这将显示如下屏幕

MySQL DROP Trigger

5. 现在,单击前面部分 红色矩形框 中显示的 Trigger 选项卡。您会注意到有一个 (+) 和 (-) 图标按钮 用于添加或删除触发器

MySQL DROP Trigger

6. 现在,单击 (-) 按钮 将永久移除与表关联的触发器。