0

在学校,我们正在学习用 SQL 编写触发器,我写了一个,但它是错误的。因此,我想删除它。

我尝试了以下方法:

mysql> use information_schema
Database changed
mysql> drop trigger log;
ERROR 1360 (HY000): Trigger does not exist

但如您所见,我收到一个错误,因为它不存在。当我使用 Sequel Pro 并使用 来检查该表时select * from triggers;,它显示存在一个名为 log 的触发器。看截图:

触发器可用

我尝试通过右键单击并单击“删除行”将其删除,但随后出现以下错误:

无法删除行。

MySQL说:用户'robbert'@'localhost'拒绝访问数据库'information_schema'

我应该如何删除该触发器?明显有吗?

4

3 回答 3

2

TRIGGER_SCHEMA列指示定义触发器的数据库:您需要USE db5,而不是INFORMATION_SCHEMA(或限定DROP TRIGGER语句中的触发器名称):

USE db5;
DROP TRIGGER log;

或者:

DROP TRIGGER db5.log;
于 2012-09-16T13:36:09.580 回答
0

尝试像这样使用:

句法:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

在你的情况下:

 DROP TRIGGER [IF EXISTS] db5.log;

发生错误是因为您使用了错误的架构名称。db5架构名称不应该是information_schema

于 2012-09-16T13:36:31.713 回答
0

您的触发器位于 db5 模式中。您需要在删除之前使用该架构

use db5;
drop trigger log;

或在 drop 语句中使用完全限定的触发器名称

drop trigger db5.log
于 2012-09-16T13:36:53.333 回答