Navicat 不记录表的创建人和最后修改时间,相关元数据取决于底层数据库是否支持并启用审计功能;MySQL 8.0+ 可查 information_schema.TABLES 的 CREATE_TIME 和 UPDATE_TIME(后者非 DDL 修改时间);真正追踪需依赖数据库日志或人工注释+版本控制。
Navicat 本身不记录表的创建人和最后修改时间
navicat 是一个数据库客户端工具,它不存储、也不展示数据库对象的创建者或修改时间这类元数据——这些信息是否可用,完全取决于底层数据库系统是否采集并暴露了该字段。mysql(尤其是 8.0+)、postgresql、sql server 等支持部分审计元数据,但默认也未必开启;而 sqlite、旧版 mysql(5.7 及以前)基本不提供 create_user 或 last_altered 字段。
MySQL 8.0+ 查看 information_schema.TABLES 中的 CREATE_TIME 和 UPDATE_TIME
在 Navicat 中执行查询即可获取近似时间(注意:不是“最后 DDL 修改时间”,而是最后一次数据变更触发的统计更新时间):
SELECT TABLE_NAME, CREATE_TIME, UPDATE_TIME, TABLE_COMMENT FROM information_schema.TABLES WHERE TABLE_SCHEMA = 'your_database_name' AND TABLE_NAME = 'your_table_name';
-
CREATE_TIME在大多数情况下是准确的建表时间(前提是未重建表) -
UPDATE_TIME表示该表最后一次INSERT/UPDATE/DELETE时间,**不是ALTER TABLE时间**;DDL 修改后这个值不会变 - 若表使用
innodb_file_per_table=OFF或为系统表,UPDATE_TIME可能为NULL - Navicat 的「表结构」右键菜单 → 「对象信息」里只显示基础字段和索引,不包含这些时间戳
想真正追踪 DDL 修改人和时间?得靠数据库层日志或审计插件
MySQL 8.0+ 可启用 audit_log 插件,或使用 general_log(性能开销大),PostgreSQL 可查 pg_stat_operations(需开启 log_statement = 'ddl' 并配合日志解析)。但这些都和 Navicat 无关:
- Navicat 不解析服务器日志,也不连接审计表(如
mysql.audit_log) - 即使你把审计表加到 Navicat 连接里,也需要自己写 JOIN 查询,且字段名、权限、格式因插件版本而异
- 没有统一视图叫
TABLE_HISTORY或DDL_LOG—— 每个数据库实现方式不同,有的压根不存创建人
替代方案:用 Navicat 的「查询」+「版本控制」组合来补位
如果你真需要可追溯的修改记录,现实中最可行的做法是绕过“自动采集”,改为人为主动留痕:
- 所有
ALTER TABLE操作,都在 Navicat 的「查询」窗口中执行,并在 SQL 前加注释,例如:-- @author alice @date 2024-06-12 @reason add email_index - 把建表/改表语句纳入 Git 管理(Navicat 支持导出为 SQL 文件,勾选「包含 DROP 和 CREATE」)
- 启用 Navicat 的「同步结构到数据库」功能时,勾选「生成同步脚本」而非直接执行,便于审查和归档
- 不要依赖 Navicat 的「设计表」图形界面直接点保存——它生成的 DDL 不带上下文,也无操作人信息
真正的创建人、审批链、上线时间,从来不在数据库元数据里,而在你的协作流程里。


















