微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

用新实体更新每一行

如何解决用新实体更新每一行

我有两个表:

CREATE TABLE public.test
(
    id integer NOT NULL GENERATED ALWAYS AS IDENTITY
)

CREATE TABLE public.test2
(
    id integer,test_id integer
)

test2具有两行(1,空)和(2,空)。表test没有任何内容。现在,我想通过在test中创建新行来填充test_id。我每次都需要新实体,这样我将拥有(1,1),(2,2)等。我尝试使用update语句准备insert查询,但我不明白怎么做。这是我尝试的方法

update t2 set t2.test_id = t.id
from test2 t2 full join (INSERT INTO test(id) VALUES (default) RETURNING id) t on t2.test_id = t.id

但是我得到以下信息:

ERROR:  Syntax error at or near "INTO"
LINE 2: from test2 t2 full join (INSERT INTO test(id) VALUES (defaul...
                                        ^
sql state: 42601
Character: 65

我可以以某种方式创建查询吗?

解决方法

目标表中只有一列使事情变得有些棘手。首先使用next_val,然后使用insert中的值test生成并分配新的id可能更简单(我们需要选项overriding system value插入{{ 1}}列,)

generated always

Demo on DB Fiddlde

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。