从information_schema DB中删除触发器

时间:2012-09-16 13:31:52

标签: mysql sql database triggers

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

我尝试了以下内容:

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

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

Trigger is available

我尝试通过右键单击并单击“删除行”来删除它,但后来我收到以下错误:

  

无法删除行。

     

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

我该如何删除该触发器?它显然在那里?

3 个答案:

答案 0 :(得分:2)

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

USE db5;
DROP TRIGGER log;

或者:

DROP TRIGGER db5.log;

答案 1 :(得分:0)

尝试使用这样:

<强>语法:

DROP TRIGGER [IF EXISTS] [schema_name.]trigger_name

在你的情况下:

 DROP TRIGGER [IF EXISTS] db5.log;

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

答案 2 :(得分:0)

您的触发器位于db5架构中。您需要在删除

之前使用该模式
use db5;
drop trigger log;

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

drop trigger db5.log