我们可以使用DROP TRIGGER语句删除/删除/移除 MySQL 中的触发器。从表中删除触发器时必须非常小心。因为一旦我们删除了触发器,它就无法恢复。如果未找到触发器,则 DROP TRIGGER 语句将引发错误。
MySQL 允许我们主要通过两种方式删除/删除/移除触发器:
- MySQL命令行客户端
- MySQL 工作台
MySQL命令行客户端
我们可以使用具有以下语法的 DROP TRIGGER 语句从数据库中删除现有触发器:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;
参数说明
drop trigger语法中使用的参数解释如下:
参数 | 说明 |
---|---|
Trigger_name | 它是我们要从数据库服务器中删除的触发器的名称。它是必需的参数。 |
Schema_name | 它是触发器所属的数据库名称。如果我们跳过此参数,该语句将从当前数据库中删除触发器。 |
IF_EXISTS | 它是一个可选参数,仅当触发器存在于数据库服务器上时才会有条件地删除它们。 |
如果我们删除不存在的触发器,我们会得到一个错误。但是,如果我们指定了 IF EXISTS 子句,MySQL会给出NOTE而不是错误。
需要注意的是,在对与触发器关联的表执行 DROP TRIGGER 语句之前,我们必须具有 TRIGGER 权限。此外,删除表将自动删除与该表关联的所有触发器。
MySQL DROP 触发器示例
让我们通过一个例子来看看如何删除与表关联的触发器。因此,首先,我们将使用以下语句显示所选数据库中可用的所有触发器:
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;
当使用 IF EXISTS 时,我们可以执行SHOW WARNING语句,该语句为不存在的触发器生成注释。查看输出: