我有一个表,我想与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它应该记住自引用外键顺序并根据层次结构创建插入?
答案 0 :(得分:0)
您需要在查询中添加订单,以便按所需顺序排出行,或者通过禁用外键约束来启动脚本。
完成后不要忘记重新启用它们。