如何在MySQL中删除触发器

上周一位客户问我如何删除MySQL中的触发器,我直接向他解释了步骤。
切记要小心,不要误删。

首先需要确认触发器确实存在。
只需使用这个命令: sql SHOW TRIGGERS FROM your_db_name LIKE 'your_trigger_name';
例如,如果要检查 mydb 库中是否有 user_log 触发器,请输入: sql SHOW TRIGGERS FROM mydb LIKE 'user_log';
如果你不指定FROM或LIKE,它会帮你列出当前数据库中的所有触发器,这是相当烦人的。
结果将告诉您触发器的作用、它对哪个表进行操作以及何时触发。
所有这些信息都包含在内。

验证它是否存在,下一步是将其删除。
删除时使用: sql DROP TRIGGER IF EXISTS your_db_name.your_trigger_name;
例如,我刚刚检查了 mydb.user_log,只需将其删除,如下所示: sql DROP TRIGGER IF EXISTS mydb.user_log;
加上IF EXISTS还是不错的,可以防止你输入错误的名字或者触发器不再存在而MySQL仍然报错,这就太尴尬了。
如果删除成功,它将回答您的问题OK,0 rows受影响。

但是您需要了解一些陷阱: 1 .您必须拥有TRIGGER权限。
如果没有权限,会直接报告bug。
2 .如果这个触发器被存储过程或视图使用,或者是系统触发器,如果​​不能删除它,MySQL会咆哮。
3 . 触发器名称必须唯一。
删除时,请确保数据库和名称匹配。

上次删除触发器时,我遇到了陷阱。
当我删除自定义触发器时,忘记了它是被视图引用的,直接报错。
因此,确认时一定要小心。
不要只看名字。
您还必须清楚地看到名称、事件和时间。

总之,删除前请检查确认。
如果可以添加 IF EXISTS,添加它可以省去麻烦。
具体操作前,再次运行SHOW命令确认无误后删除。

安装Mysql后,taskeng.exe窗口弹出的解决方法

我前天安装了MySQL。
我一启动,我的电脑上就疯狂地弹出了taskeng.exe窗口。
它是如此密集和烦人。
我记得以前安装软件时遇到过问题,必须找到解决方案。
不,我在网上搜索了一下,发现了一个绝妙的方法。
我首先打开了控制面板。
很难找到。
我必须在开始菜单中单击。
然后我进入管理工具,点击任务计划程序。
这个任务调度程序相当复杂。
它分为几层。
终于找到了MySQL相关的任务。
乍一看,有不少,比如自动更新、维护任务等。
乍一看,这些家伙似乎是来捣乱的。

我右键单击了这些任务,禁用了所有可以禁用的任务,并暂时结束了一些正在进行的任务。
这样做之后,taskeng.exe窗口终于消失了。
不过我得留意一下,如果这影响了MySQL的正常使用怎么办。
是的,我得找个时间慢慢研究一下。
等等,我突然想到,这台电脑以前是不是安装过MySQL,只是我没找到? 否则我需要检查计算机的安装记录。

MYSQL笔记:删除操作Delete、Truncate、Drop用法比较

粗略来说,这三种移除操作的速度和影响是完全不同的,但使用错误的操作会直接导致你跪倒在地。

我们先来说说最重要的事情。
Drop从速度上来说是最快的,因为它直接破坏表,其次是Truncate,delete最慢。
去年我们跑了一个高并发的项目,使用“删除”命令清除了3 000级的数据。
CPU 立即飙升至 9 0%,Truncate 在几分钟内就完成了。
还有一点是,删除原则上是逐行删除,并留下一条可供撤消的路径。
truncate直接清空表结构并重新开始。
滴甚至还帮你擦桌子。
然而,在InnoDB中使用delete后,您将必须手动优化表以释放空间。
很多人不注意这一点。
还有一个更重要的细节。
Truncate会自动重置增加的ID,但InnoDB重启后会出现乱码,所以备份数据是一个基本操作,坦白讲是比较混乱的。

一开始我以为“删除”是最安全的方式,但后来我发现这是错误的。
日志文件在高级删除过程中爆炸了,所以我使用 Truncate 来扑灭大火。
等等,还有别的事。
删除操作是物理删除,内存立即被清空,但删除操作是逻辑删除,必须结合OPTIMIZE TABLE才能彻底释放。
很多人对此感到困惑。
一般建议使用Delete来添加事务,如果数据很大但需要先备份,则使用Truncate,只有在确实需要删除表时才使用Drop——当然,使用前最好确认表名正确,因为此操作无法撤消。
您觉得哪一个最令人兴奋?