Oracle SQLDevloper:如何使用自引用外键

时间:2016-04-18 07:17:28

标签: oracle oracle-sqldeveloper

我有一个表,我想与sql开发人员一起导出,以便能够恢复我想要更改的数据。为此,我使用Oracle SQLDeveloper的功能,我可以在数据中创建一个插入脚本。但我是Struggeling让这个脚本工作,因为它确实在一个带有自引用外键的表上执行,该外键代表一个层次结构。

虚拟表可能看起来像这样

primary_key_id     self_fk
1                  null
2                  1
3                  1
4                  2
5                  3

但导出后脚本的结果对我来说确实如此:

Insert into dummy_table(primary_key_id,self_fk) 
values(4,2);
Insert into dummy_table(primary_key_id,self_fk) 
values(5,3);
Insert into dummy_table(primary_key_id,self_fk) 
values(1,null);
-- And so on

但它应该是这样的,只是为了创建外键引用应该已经存在的元素:

Insert into dummy_table(primary_key_id,self_fk) 
values(1,null);
Insert into dummy_table(primary_key_id,self_fk) 
values(2,1);
Insert into dummy_table(primary_key_id,self_fk) 
values(4,2);
-- And so on

因此,在将数据作为插入脚本导出时,插入的顺序不正确。因此,我收到外键尚不存在的错误消息。那么在导出数据时是否有任何选项告诉SQL Developer它应该记住自引用外键顺序并根据层次结构创建插入?

1 个答案:

答案 0 :(得分:0)

您需要在查询中添加订单,以便按所需顺序排出行,或者通过禁用外键约束来启动脚本。

完成后不要忘记重新启用它们。