在表a中创建一条记录,并将其id分配给表B



我有一组公司,每个公司都需要在另一个表中生成一个UUID。

companies table
detail_id (currently NULL for all companies)
details table
id
uuid
date
...

我想用新创建的详细信息更新所有公司,如下:

UPDATE companies
SET details_id =
(
INSERT INTO details
(uuid, date)
VALUES (uuid_generate_v1(), now()::date)
RETURNING id
)

但这给了我一个语法错误,因为我不能在UPDATE中使用INSERT INTO。在详细信息表中创建一行并立即在公司表中设置新创建的id的正确方法是什么?

(我使用的是Postgres(

您可以使用数据修改CTE:

with new_rows as (
INSERT INTO details ("uuid", "date")
VALUES (uuid_generate_v1(), current_date)
RETURNING id
)
update companies
set details_id = new_rows.id
from new_rows

最新更新