2013-10-29 48 views
0

在刷新站点(和其他...)之后,我找不到插入命令的示例,允许我将“RETURNING”值存储到表格,CTE等。这就是我'倒要做到:存储多个插入ID

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 

反正是有得到一个INSERT命令来存储它的“返回”值,使用CTE的表?当我尝试上面的例子中,我得到:

错误:语法错误或接近 “插入” LINE 1:... _tmp_inserted_employers与AS INSERT_ROWS(INSERT INT ...提前

谢谢.. 。

+0

你使用的是什么版本?我认为这个功能在9.1 – alexius

回答

1

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

这里有为例sql fiddle

+0

中可用啊......谢谢!版本是我的问题。讽刺的是,我在我的本地开发箱上运行9.0,我的开发服务器运行的是9.1.6。正如你可能已经猜到的那样,我在我的本地开发箱上运行它,它不起作用。但是,如果我在我的开发服务器上运行它,它工作正常。再次感谢! :-) –