我想在UPDATE语句中的UPDATE中使用PostgreSQL的RETURNING子句,并且遇到了麻烦。是否将UPDATE中的RETURNING子句用作INSERT查询子句的查询子句?
Postgres允许一个查询子句在INSERT,例如:
INSERT INTO films
SELECT * FROM tmp_films WHERE date_prod < '2004-05-07';
我想用的返回子句从UPDATE作为INSERT查询子句,例如:
INSERT INTO user_status_history(status)
UPDATE user_status SET status = 'ACTIVE' WHERE status = 'DISABLED' RETURNING status
我发现的所有Postgres引用都表明,RETURNING子句的行为与SELECT子句完全相同,但是当我运行类似上述的操作时,我得到以下内容:
ERROR: syntax error at or near "UPDATE"
LINE 2: UPDATE user_statuses
尽管能够无误地执行上述查询的UPDATE部分。
是否将UPDATE中的RETURNING子句用作INSERT查询子句的查询子句?
目标是更新一个表,并在可能的情况下使用单个查询插入另一个表。
CTE现在是9.1和更高版本的PostgreSQL的一部分。 – 2013-08-19 18:21:37