我正在尝试执行UPDATE
后返回一组行。
这样的事情。
UPDATE Notis new_noti SET notis = '{}'::noti_record_type[]
FROM (SELECT * FROM Notis WHERE user_id = 2 FOR UPDATE) old_noti
WHERE old_noti.user_id = new_noti.user_id RETURNING unnest(old_noti.notis);
但是postgres抱怨是正确的:
我应该如何实施呢?
也就是说,
RETURNING
在SELECT
?之后是UPDATE
ed数组中的一组行。我知道一个函数可以使用
RETURNS SETOF
实现此目的,但宁愿不要这样做。 最佳答案
WITH upd AS (
UPDATE Notis new_noti SET notis = '{}'::noti_record_type[]
FROM (SELECT * FROM Notis WHERE user_id = 2 FOR UPDATE) old_noti
WHERE old_noti.user_id = new_noti.user_id RETURNING old_noti.notis
)
SELECT unnest(notis) FROM upd;