Navicat 15(及后续版本)的ER图不支持Oracle Sequence,因其设计上不解析、不提取、不渲染SEQUENCE对象,仅识别表、视图、约束等核心关系结构,且逆向工程元数据查询不包含ALL_SEQUENCES。
Navicat 15 的 ER 图根本不支持 Oracle Sequence
不是配置问题,也不是版本 bug——navicat data modeler(含 navicat premium 中的 er 图模块)在设计上就**不解析、不提取、不渲染 oracle 的 sequence 对象**。它只识别表(table)、视图(view)、主键/外键约束、索引这些构成实体关系的核心结构。序列在 oracle 中属于“独立对象”,不参与表间关系建模,因此 er 图生成器直接跳过它。
尝试强制显示只会触发元数据查询失败
如果你在 Navicat 15 中右键数据库 → “逆向工程”或“从数据库生成 ER 图”,它内部会查 ALL_TAB_COLUMNS、ALL_CONSTRAINTS 等视图,但**不会查 ALL_SEQUENCES 或 DBA_SEQUENCES**。即使你有 SELECT_CATALOG_ROLE 权限,ER 图流程也不会执行这条语句,所以不会报错,只是安静地忽略所有序列。
- 常见误操作:手动在 ER 图画布上添加一个“自定义形状”并标为“SEQ_USER_ID”,这不属于真实逆向,导出 DDL 时也不会生成
CREATE SEQUENCE - Oracle 12c+ 的 Identity Column(
GENERATED ALWAYS AS IDENTITY)会被识别为列属性,但底层依赖的序列仍不可见 - Navicat Data Modeler 的“对象浏览器”里能看到
Sequences文件夹(仅限 PostgreSQL),Oracle 下该节点压根不出现
替代方案:用 SQL 查询 + 手动标注
想在设计阶段体现序列逻辑,只能绕过 ER 图自动生成,改用组合方式:
- 先执行
SELECT sequence_name, increment_by, cache_size FROM all_sequences WHERE sequence_owner = 'YOUR_SCHEMA'获取完整列表 - 把结果复制进 Excel 或绘图工具,在 ER 图截图旁单独列出序列用途(如:
EMP_SEQ→ 供EMPLOYEE.ID插入时NEXTVAL) - 若用 Navicat Premium 17+,可新建一个“SQL 文件”标签页,把
CREATE SEQUENCE语句和对应表的 DDL 放在一起,靠注释关联(例如:-- 关联表: EMPLOYEE)
为什么官方不加支持?
这不是疏忽,而是权衡取舍的结果。Oracle 序列本身无外键、无依赖关系、不参与参照完整性;它的调用完全在应用层或触发器里硬编码。ER 图本质是描述静态结构关系,而序列是动态值生成机制。强行纳入会导致模型语义混乱——比如一个序列被 5 张表共用,ER 图该连向哪张?连了又如何表达“非强制引用”?这类问题没有标准解法,所以 Navicat 选择保持边界清晰。
真正容易被忽略的是:哪怕你升级到 Navicat Premium 17 或 18,只要底层用的是 Oracle,这个限制依然存在。别在“设置→选项→ER 图”里反复找开关——那里根本没有序列相关选项。


















