我在Postgres数据库中有以下表格(简单示例):
表A
person_id | UNIQUE SERIAL integer
first_name | text
last_name | text
full_name_id | integer[]
表B
full_name_id | UNIQUE SERIAL integer
full_name | text
对于表A的每一行,我想在{B}中使用full_name = first_name || last_name
插入一个新行,并更新表A中相应行中的新full_name_id
。
是否可以编写一个执行此操作的查询?
这是我到目前为止(再次,无足轻重):
WITH a AS (
SELECT first_name, last_name
FROM table_a
)
INSERT
INTO table_b(full_name)
SELECT first_name || last_name AS full_name
FROM a
RETURNING full_name_id;
在我的真实场景中,类似的查询成功地在表B中插入了正确的行。但是,我不知道接下来要做什么,以更新表A中的full_name_id
。
注意:表A中的full_name_id
列是一个更好地反映我的真实场景的数组(表A中的一行可以引用表B中的多行)。据我所知,这意味着我无法使用外键。