克隆字段并修改而不知道Postgres中的字段

时间:2018-04-05 15:10:02

标签: sql json postgresql sql-insert

这个问题在其他question中得到了部分回答,但并未完全回答。

我有一张桌子,我想克隆修改一个字段的记录。 (基本上我想为测试创建虚假数据,而不用担心架构是否在变化)。

使用我可以做的其他问题的想法:

SELECT json_populate_record(my_table, json_object(ARRAY['id_table', 2000::text])) 
FROM my_table WHERE id_table = 1

这将返回一个记录,其字段与id_table 1完全相同,但id_table将被更改。

但是,我不知道如何将其插入表中。如果我这样做:

INSERT INTO my_table 
SELECT json_populate_record(my_table, json_object(ARRAY['id_table', 2000::text])) 
FROM my_table where id_table = 1

我得到了

  

错误列id_table的类型为bigint,但表达式的类型为my_table“

如何重新插入这个领域?

1 个答案:

答案 0 :(得分:1)

INSERT INTO my_table 
SELECT (json_populate_record(my_table, json_object(ARRAY['id_table', 2000::text]))::my_table).*
FROM my_table 
WHERE id_table = 1;

http://www.sqlfiddle.com/#!17/8180d/3