MySQL 删除触发器

我们可以使用 DROP TRIGGER 语句 删除 MySQL 中的触发器。从表中删除触发器时必须非常小心。因为一旦我们删除了触发器,它就无法恢复。如果未找到触发器,则 DROP TRIGGER 语句将引发错误。

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

  1. MySQL 命令行客户端
  2. MySQL Workbench工作台

一、MySQL 命令行客户端删除触发器

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

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;  

参数说明

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

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

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

二、MySQL 删除触发器 示例

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

mysql> SHOW TRIGGERS IN employeedb; 

执行语句后,我们可以看到有两个触发器名为before_update_salaries和sales_info_before_update。见下图:

如果我们要删除before_update_salaries触发器,请执行以下语句:

mysql> DROP TRIGGER employeedb.before_update_salaries;  

它将成功地从数据库中删除触发器。如果我们再次执行上面的语句,它会返回一个错误信息。查看输出:

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

mysql> DROP TRIGGER IF EXISTS employeedb.before_update_salaries;  

我们可以执行SHOW WARNING语句,该语句在使用 IF EXISTS 时为不存在的触发器生成一个NOTE。查看输出:

三、如何在 MySQL 工作台中删除触发器?

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

现在执行以下步骤来删除或销毁与表关联的触发器:

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

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

3. 展开表子菜单并选择与触发器关联的表。再次展开选中的Table -> Triggers;我们将得到下图:

4. 现在,右键单击选定的表并选择Alter Table,提供如下屏幕的选项:

5. 现在,点击触发器,上一节的红色矩形框中显示的选项卡。您会注意到有一个(+) 和 (-) 图标按钮来添加或删除触发器:

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

热门文章

优秀文章