Oracle SQL Data Modeler 在 DDL 脚本导出时缺少主键

Oracle SQL Data Modeler missing a PRIMARY KEY on DDL script export

该图有 40 多个 table,其中大部分都定义了主键。

出于某种原因,有一个 table,它定义了一个主键,但是当我将模型导出到 DDL 脚本时,它被忽略了。

这是 "offending" 密钥(即使已检查它在生成的 DDL 脚本中无处可寻):

有人遇到过同样的问题吗?关于如何解决它的任何想法?

[编辑] 这是定义密钥的地方:

这是 DDL 预览(是的,主键显示在那里):

如果我尝试为 table(仍未生成主键)生成 DDL,就会发生这种情况:

在文件下的数据建模器菜单中,我使用了导出 -> DDL 文件。键出现在 DDL 中,然后当我返回图表并进行 DDL 预览时,它显示了所有丢失的东西。

我终于能够识别并重现问题。

这是一个简单的约束冲突。

Table MIEMBROS 在其主键列上与另一个 table 具有强制的 1 对 n 关系(外键),反之亦然(在 MIEMBROS 与另一个 table 的主键)。

两个 table 之间的这种关系使得无法向它们中的任何一个添加记录:插入操作将 return 一个错误,抱怨指向另一个 table 的外键限制 table.

无论如何,我意识到其中一个关系是 0 到 n,所以我只是取消选中外键定义上的 "mandatory" 复选框,一切正常。

因此,简而言之:数据建模器 "fails" 默默地 如果您要定义相互关系(两个外键,每个 table通过不生成 table 之一的主键,在不可为空的唯一列上反对另一个 table)。

这种奇怪的行为,如果你问我的话!

"This kind of relationship between two tables makes it impossible to add a record to any of them: The insert operation will return an error complaining about the foreign key restriction pointing the other table."

实际上,如果你有延迟约束,这不是不可能的。例如,可以在提交时而不是在插入时立即强制执行约束。