【发布时间】:2011-10-17 05:57:25
【问题描述】:
这个问题已经被几个人问过了,但我的问题似乎有所不同。
实际上,我必须将来自 postgresql 中不同数据库的相同结构化表合并到一个新数据库中。我正在做的是我使用 dblink 连接到远程数据库,读取该数据库中的该表并将其插入到当前数据库中的表中,如下所示
INSERT INTO t_types_of_dementia SELECT * FROM dblink('host=localhost port=5432 dbname=snap-cadence password=xxxxxx', 'SELECT dementia_type, snapid FROM t_types_of_dementia') as x(dementia_type VARCHAR(256),snapid integer);
这个查询第一次运行良好,但是当我再次运行它或尝试使用其他远程数据库的表运行它时:它给了我这个错误
错误:重复键值违反唯一约束 “t_types_of_dementia_pkey”
我希望这个新表由来自其他数据库的其他表的条目填充。 提出的一些解决方案讨论了序列,但我没有使用任何
当前db中表的结构是
CREATE TABLE t_types_of_dementia(
dementia_type VARCHAR(256),
snapid integer NOT NULL,
PRIMARY KEY (dementia_type,snapid)
);
附:这两列都用作主键是有特定原因的,这可能与本次讨论无关,因为在其他表中也发生了同样的问题,但情况并非如此。
【问题讨论】:
标签: sql postgresql constraints primary-key unique-constraint