MySQL 删除触发器
我们可以使用DROP TRIGGER语句在MySQL中删除触发器。在删除表中的触发器时,必须非常小心。因为一旦删除了触发器,就无法恢复。如果找不到触发器,则DROP TRIGGER语句会抛出错误。
MySQL允许我们主要通过两种方式删除触发器:
- MySQL命令行客户端
- MySQL Workbench
MySQL命令行客户端
我们可以使用以下语法将现有触发器从数据库中删除:
DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name;
参数说明
下拉触发器语法中使用的参数解释如下:
参数 | 描述 |
---|---|
Trigger_name | 这是我们想要从数据库服务器中移除的触发器的名称。这是一个必需的参数。 |
Schema_name | 这是触发器所属的数据库名称。如果我们跳过此参数,该语句将从当前数据库中删除触发器。 |
IF_EXISTS | 这是一个可选参数,仅在数据库服务器上存在触发器时有条件地删除它们。 |
如果我们删除不存在的触发器,将会出现错误。然而,如果我们已经指定了IF EXISTS子句,MySQL会在错误之外给出一个 NOTE 。
需要注意的是,在执行DROP TRIGGER语句之前,我们必须具备TRIGGER权限,并且这个触发器必须与表相关联。另外,删除一个表会自动删除与该表相关联的所有触发器。
MySQL DROP Trigger示例
让我们通过一个示例来看看如何删除与表相关联的触发器。所以首先,我们将使用以下语句显示所选数据库中的所有触发器:
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时才会生成该信息。查看输出结果:
如何在MySQL Workbench中删除触发器?
要在workbench中创建一个在更新后触发的触发器, 我们首先 启动MySQL Workbench 并使用用户名和密码登录。我们将获得如下的用户界面:
现在按以下步骤删除或销毁与表关联的触发器:
1. 转到 导航栏 选项卡,然后单击 模式 菜单。它将显示MySQL数据库服务器中可用的所有数据库。
2. 选择数据库(例如, mystudentdb )。然后,双击所选模式。它会显示包含表、视图、函数和存储过程的 子菜单 。请查看下面的屏幕截图。
3. 展开 表 子菜单并选择一个关联了触发器的表。再次展开选中的 表 – > 触发器;我们将得到以下图片:
4. 现在,右键单击所选表格,选择 ** 修改表 ** 选项,如下所示:
5. 现在,点击前一节所示的 触发器 选项卡。 红色矩形框 内。您会注意到有一个 (+) 和 (-)图标按钮 ,用于添加或删除触发器:
6. 现在,点击 (-) 按钮 将永久地删除与该表格关联的触发器。