在学校,我们正在学习用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'
我该如何删除该触发器?它显然在那里?
答案 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