这个问题在其他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“
如何重新插入这个领域?
答案 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;