PostgreSQL - 在表A中插入一行,然后使用返回的id更新表B中的行

时间:2018-02-26 22:06:52

标签: sql postgresql

我在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中的多行)。据我所知,这意味着我无法使用外键。

0 个答案:

没有答案