在 PostgreSQL 数据库表中,我需要复制上个月的记录块,更改某些列中的值,并将更新的记录附加到表中。详细信息包括:
- 键
id配置nextval为自动创建唯一键值 - 目标记录
'200814'在group_tag - 新记录需要
'200911'在group_tag - 其他几个字段需要更新,如
SELECT
到目前为止我的脚本:
INSERT INTO hist.group_control(
id,
group_tag,
process_sequence,
state,
cbsa_code,
window_starts_on,
preceding_group,
preceding_origin,
preceding_window_starts_on
)
SELECT id,
'200911',
1,
state,
cbsa_code,
'2020-09-11',
'200814',
preceding_origin,
'2020-08-14'
FROM hist.group_control WHERE group_tag='200814';
这会产生一个错误:
SQL Error [23505]: ERROR: duplicate key value violates unique constraint "group_control_pkey"
Detail: Key (id)=(12250) already exists.
键值最多13008存在的记录。我本来希望nextval确定这一点并将id值从13009. 我试图简单地不包括id在认为该nextval函数会自动运行的语句中,但这也出错了。由于各自的错误,以下变体无效:
alter sequence group_control_id_seq restart with 13009;
SQL Error [42501]: ERROR: must be owner of relation group_control_id_seq
SELECT setval('group_control_id_seq', 13009, true);
SQL Error [42501]: ERROR: permission denied for sequence group_control_id_seq
任何人都知道如何编写主语句以不生成重复键,或者如何告诉nextval从值开始13009