存储多个插入ID

时间:2013-10-29 14:53:25

标签: sql postgresql insert common-table-expression

在搜索网站(和其他人......)之后,我找不到插入命令的示例,允许我将“RETURNING”值存储到表格,CTE等。这就是我想要做的:

WITH insert_rows AS (
  INSERT INTO employers (column1, column2, insert_date)
  SELECT distinct tc.column1, 'any text', now()
  FROM _tmp_employer_updates tc
  LEFT JOIN employers e ON e.column1 = tc.column1
  WHERE e.column1 IS NULL   -- Only insert non-existing employer names
  RETURNING employer.row_uuid, employer.column1, employer.column2;
  )
SELECT * FROM insert_rows; -- table of returning values

有没有得到一个插入命令来使用CTE将它“返回”值存储到表中?当我尝试上面的例子时,我得到:

错误:“INSERT”或其附近的语法错误 第1行:... _tmp_inserted_employers AS with insert_rows AS(INSERT INT ...

提前致谢...

1 个答案:

答案 0 :(得分:1)

;之后删除returning ...,在employer中的列之前删除别名returning(或将其更改为employers)。否则你的查询看起来不错。

以下是 sql fiddle 的示例。