为来自另一个 table 的每条记录创建一条记录,并将 id 设置为该字段
Create a record for each record from another table and set the id to the field
我需要写一个迁移。有一个 profile_details table 和一个帐户 table。我需要在 profile_details 中为帐户 table 中的每条记录创建一条记录,并将帐户 table 中的 profile_details_id 字段设置为 [=17= 中的任何 ID ] table。 account record取哪个id并不重要,所有开头的记录都是一样的,最主要的是它们是唯一的。
with profile as (
INSERT INTO profile_details
(id, company_name, country_code, address)
SELECT uuid_generate_v4(), '', '', ''
from account
returning *
)
update account
Set profile_details_id = profile.id
FROM profile
此选项因错误而无效
ERROR: duplicate key value violates unique constraint "UQ_1b48abd3c37e09aac8235b3cd22"
DETAIL: Key (profile_details_id)=(0ee5ead1-c0f0-4cd3-ae60-a1b493b0d460) already exists.
SQL state: 23505
您只需切换 UPDATE
和 INSERT
语句:
- 为每个帐户分配一个随机 UUID,并使用
RETURNING
获取已创建 UUID 的列表。
- 使用返回的 UUID 在
profile_details
table 中创建新记录。
WITH new_uuids AS (
UPDATE account
SET profile_details_id = uuid_generate_v4()
RETURNING profile_details_id
)
INSERT INTO profile_details(id, company_name, country_code, address)
SELECT
profile_details_id, '', '', ''
FROM new_uuids
我需要写一个迁移。有一个 profile_details table 和一个帐户 table。我需要在 profile_details 中为帐户 table 中的每条记录创建一条记录,并将帐户 table 中的 profile_details_id 字段设置为 [=17= 中的任何 ID ] table。 account record取哪个id并不重要,所有开头的记录都是一样的,最主要的是它们是唯一的。
with profile as (
INSERT INTO profile_details
(id, company_name, country_code, address)
SELECT uuid_generate_v4(), '', '', ''
from account
returning *
)
update account
Set profile_details_id = profile.id
FROM profile
此选项因错误而无效
ERROR: duplicate key value violates unique constraint "UQ_1b48abd3c37e09aac8235b3cd22"
DETAIL: Key (profile_details_id)=(0ee5ead1-c0f0-4cd3-ae60-a1b493b0d460) already exists.
SQL state: 23505
您只需切换 UPDATE
和 INSERT
语句:
- 为每个帐户分配一个随机 UUID,并使用
RETURNING
获取已创建 UUID 的列表。 - 使用返回的 UUID 在
profile_details
table 中创建新记录。
WITH new_uuids AS (
UPDATE account
SET profile_details_id = uuid_generate_v4()
RETURNING profile_details_id
)
INSERT INTO profile_details(id, company_name, country_code, address)
SELECT
profile_details_id, '', '', ''
FROM new_uuids