Oracle SQL Data Modeler在DDL脚本导出时缺少PRIMARY KEY

时间:2015-08-20 13:06:20

标签: oracle oracle-sql-data-modeler

该图表有40多个表,其中大多数都定义了主键。

由于某种原因,有一个表定义了主键,但在将模型导出到DDL脚本时会被忽略。

这是“违规”键(即使已经检查过它在生成的DDL脚本上找不到):

enter image description here

有没有人有同样的问题?关于如何解决它的任何想法?

[编辑] 这是定义键的位置:

enter image description here

这是DDL预览(是的,主键出现在那里):

enter image description here

如果我尝试仅为该表生成DDL(仍未生成主键),则会发生这种情况:

enter image description here

3 个答案:

答案 0 :(得分:1)

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

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

MIEMBROS与其主键列上的另一个表具有强制的1到n关系(外键),反之亦然(MIEMBROS上的外键与另一个表相对应#39 ; s主键)。

两个表之间的这种关系使得无法向其中任何一个表添加记录:insert操作将返回一个错误,抱怨指向另一个表的外键限制。

无论如何,我意识到其中一个关系是0到n所以我只是取消选中"强制性"外键定义上的复选框,一切都很顺利。

因此,简而言之:Data Modeler"失败" 静默如果要在不可为空的唯一列上定义相互关系(两个外键,每个表对应另一个表一个),则不生成其中一个表的主键。

如果你问我这么奇怪的行为!

答案 1 :(得分:1)

"两个表之间的这种关系使得无法向其中任何一个表添加记录:插入操作将返回一个错误,抱怨指向另一个表的外键限制。"

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

答案 2 :(得分:0)

在File下的Data Modeler菜单中,我使用了Export - > DDL文件。密钥出现在DDL中,然后当我回到图表并进行DDL预览时,它显示了所有缺失的东西。