如何重新插入所有现有字段但只更改postgresql中的一个字段数据?

how to re-insert all of the existing fields but only change one field data in postgresql?

我在一个 table 中有一堆数据,例如,假设我有一个包含四列的 table。

身份证、姓名、年龄、地址。

id 保持不变,但所有其他字段都发生了变化。即它看起来像这样。

id      name         age        address
1       steve        20         test address 1 
1       mark         21         test address 2 

现在我想要相同的数据集,但只更改 id,例如,一切都将保持不变,但只有 id 更改为如下所示:

id       name          age        address
1        steve         20         test address 1
1        mark          21         test address 2
2        steve         20         test address 1
2        mark          21         test address 2

但我不想一次插入一个字段,因为我有 100 个字段,这样做会浪费很多时间。

所以我的问题是如何在 Postgres 中尽可能轻松地做到这一点?

忘记说了,其他字段默认是没有设置的,我想从特定字段id中复制数据,所以大体上应该是这样的。首先,我想从一个特定的 id 中获取所有字段,然后再次插入这些字段,但现在使用新的 id,例如 2。

insert into table(id,name,age,address) select 2,name,age,address from table
create table list (id int,name text,age int,address text);


insert into list values (1,'steve',20,'AAAAAAAAA');
insert into list values (1,'mark',21,'BBBBBBBBB');

现在为 INSERT 操作创建一个函数:

create or replace function ins_list(_updateID int ,_getID int) returns void as
$$
-- _updateID : - the new ID that you want to insert(ex. 2)
-- _getID : - the ID that you need to search to get values from name,age,address (ex.1)
insert into list (id,name,age,address) select _updateID,name,age,address from list where id  = _getID
$$
language sql  

插入你只需要像

一样调用
select ins_list(2,1);