如何使用一个SQL语句删除MySQL数据库中的所有触发器?

前端之家收集整理的这篇文章主要介绍了如何使用一个SQL语句删除MySQL数据库中的所有触发器?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个已克隆的数据库,现在所有日志记录触发器都指向原始模式中的日志表。我需要一次性删除所有这些(有几十个),以便我可以重新创建它们。如何用一个命令完成?

解决方法

这是一个老问题,但由于它是我的搜索中不断涌现的问题,我想我会在这里发布一个解决方案。在我的情况下,我需要创建一个具有完整MysqLdump的单个文件,然后删除任何触发器,然后重新添加它们。我能够通过使用以下命令将DROP TRIGGER语句附加到我的转储中,然后再附加触发器的转储。
MysqL -u [db user] -p[db password] --skip-column-names [db name] -e 'SHOW TRIGGERS;' | cut -f1 | sed -r 's/(.*)/DROP TRIGGER IF EXISTS \1;/' >> dump.sql

要在同一个命令中实际删除所有触发器(如注释中的@Stephen Crosby所述),您可以将其重新导入MysqL,如下所示:

MysqL -u [db user] -p[db password] --skip-column-names [db name] -e 'SHOW TRIGGERS;' | cut -f1 | sed -r 's/(.*)/DROP TRIGGER IF EXISTS \1;/' | MysqL -u [db user] -p[db password] [db name]

猜你在找的MsSQL相关文章