mysql如何查看表中的所有约束和触发器?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql如何查看表中的所有约束和触发器?相关的知识,希望对你有一定的参考价值。
对应的语句是什么?
谢谢
-- 查看约束
SELECT * FROM information_schema.`TABLE_CONSTRAINTS`;
-- 查看触发器
SELECT * FROM information_schema.`TRIGGERS`; 参考技术A 最简单的方法是安装一个mysql工具,如:sql font ,一目了然了。 参考技术B 下载安装一个第三方工具吧,navicat for mysql 还不错 一直用着 参考技术C show trigger status;
使用 Mysql 中的触发器跟踪日志表中 DB 的所有 DML/DDL 更改
【中文标题】使用 Mysql 中的触发器跟踪日志表中 DB 的所有 DML/DDL 更改【英文标题】:Track all the DML/DDL changes of DB in a log table using trigger in Mysql 【发布时间】:2016-11-20 23:23:44 【问题描述】:我想使用一个日志表跟踪特定数据库上发生的所有数据库更改。
我检查了许多解决方案,但它们都为 DB 中的每个表提供了一个审计表。我们如何在触发器的帮助下在一个表中跟踪它们?
表格列可能有:
id - primary key
db_name -- DB Name
version, -- Ignore it(i have a column in my table)
event_type, -- DDL/DML command name
object_name, -- Table/Procedure/Trigger/Function name which is changed
object_type, -- TYpe like table,procedure,trigger
sql_command, -- query executed by user
username, -- who executed it
updated_on -- timestamp
提前致谢。
【问题讨论】:
【参考方案1】:执行 ddl 命令时调用的触发器(以便您可以记录它们)在 mysql 中不存在。但你可能想使用logfiles,尤其是The General Query Log:
一般查询日志是mysqld正在做什么的一般记录。服务器在客户端连接或断开连接时将信息写入此日志,并记录从客户端接收到的每个 SQL 语句。当您怀疑客户端出现错误并想确切了解客户端发送到 mysqld 的内容时,通用查询日志非常有用。
默认情况下禁用日志,启用它可能会降低性能。并且它不会包括间接更改(例如,在过程中执行的 ddls)。
如果您可以安装插件,一个稍微更可配置(并且性能更高)的替代方案是使用审计插件,请参阅MySQL Enterprise Audit,或任何免费实现,例如this one,也可以写成your own,不过基本上会和一般的log一样记录。
另一个重要的信息来源可能是information schema 和performance schema。从那里您基本上可以收集您需要的所有信息(尤其是log of recently executed queries)并从中生成您的日志表,但是需要一些工作来收集您想要的所有数据 - 它不会被操作触发,所以您必须自己定期检查更改(例如,将INFORMATION_SCHEMA.TABLES
中的数据与保存的副本进行比较,以跟踪添加、删除和重命名的表)。
另一方面,定期发送mysql_dump
后跟diff
到最新版本可能要容易得多。
【讨论】:
以上是关于mysql如何查看表中的所有约束和触发器?的主要内容,如果未能解决你的问题,请参考以下文章