MySQL 删除触发器
我们可以使用 DROP TRIGGER 语句 删除 MySQL 中的触发器。从表中删除触发器时必须非常小心。因为一旦我们删除了触发器,它就无法恢复。如果未找到触发器,则 DROP TRIGGER 语句将引发错误。
MySQL允许我们主要通过两种方式删除触发器:
- MySQL 命令行客户端
- 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. 现在,单击(-) 按钮将永久删除与表关联的触发器。
热门文章
优秀文章