该图表有40多个表,其中大多数都定义了主键。
由于某种原因,有一个表定义了主键,但在将模型导出到DDL脚本时会被忽略。
这是“违规”键(即使已经检查过它在生成的DDL脚本上找不到):
有没有人有同样的问题?关于如何解决它的任何想法?
[编辑] 这是定义键的位置:
这是DDL预览(是的,主键出现在那里):
如果我尝试仅为该表生成DDL(仍未生成主键),则会发生这种情况:
答案 0 :(得分:1)
我终于能够识别并重现问题了。
这是一种简单的约束冲突。
表MIEMBROS
与其主键列上的另一个表具有强制的1到n关系(外键),反之亦然(MIEMBROS
上的外键与另一个表相对应#39 ; s主键)。
两个表之间的这种关系使得无法向其中任何一个表添加记录:insert操作将返回一个错误,抱怨指向另一个表的外键限制。
无论如何,我意识到其中一个关系是0到n所以我只是取消选中"强制性"外键定义上的复选框,一切都很顺利。
因此,简而言之:Data Modeler"失败" 静默如果要在不可为空的唯一列上定义相互关系(两个外键,每个表对应另一个表一个),则不生成其中一个表的主键。
如果你问我这么奇怪的行为!
答案 1 :(得分:1)
"两个表之间的这种关系使得无法向其中任何一个表添加记录:插入操作将返回一个错误,抱怨指向另一个表的外键限制。"
实际上,如果你有延迟约束,这不是不可能的。可以强制执行约束,例如,在提交时而不是在插入时立即执行。
答案 2 :(得分:0)
在File下的Data Modeler菜单中,我使用了Export - > DDL文件。密钥出现在DDL中,然后当我回到图表并进行DDL预览时,它显示了所有缺失的东西。