问题描述
我有两个表:
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