我正在努力将insert查询写入备份数据库。我将位置和实体表写入此数据库。问题是实体通过place.id列链接到place。我在place表中添加了一个列place.original_id来存储它原来的'id‘。所以,现在我进入了新的数据库,它的id列改变了,但是我保存了原始的id,所以我仍然可以将实体表链接到它。我正在试图找出如何编写实体来获得新的id。
到目前为止,我认为:
insert into entities_backup (id, place_id)
select
nextval('public.entities_backup_id_seq'),
(select id from places where original_id = (select place_id from entities) as place_id
from
entities我知道我错过了什么,因为这不起作用。我需要从entity.place_id = places.original_id的位置抓取id列。任何帮助都会很好。
发布于 2016-10-20 18:03:19
我想这就是你想要的
insert into entities_backup (id, place_id)
select nextval('public.entities_backup_id_seq'), places.id
from places, entities
where places.original_id = entities.place_id;发布于 2016-10-20 18:22:07
我正在努力将insert查询写入备份数据库。我将位置和实体表写入此数据库。问题是实体通过place.id列链接到place。我在place表中添加了一个列place.original_id来存储它原来的'id‘。所以,现在我进入了新的数据库,它的id列改变了,但是我保存了原始的id,所以我仍然可以将实体表链接到它。
从一开始就不存在这个问题就更简单了。
更好的解决方案是转储和加载完整的places和entities,完整地包含主键和外键,而不是事后尝试修复。甲骨文的导出或者像ora2pg这样的实用程序应该能够做到这一点。
抱歉,我不能再多说了。我了解波斯特不是甲骨文。
https://stackoverflow.com/questions/40160863
复制相似问题