我有一组公司,每个公司都需要在另一个表中生成一个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