我正在尝试在执行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之后,从SELECTed数组中提取一组行。
我知道一个函数可以使用RETURNS SETOF实现这一点,但是如果可能的话,我更不愿意这样做。
发布于 2015-08-28 15:04:11
使用带语句
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;发布于 2017-11-09 23:43:25
可能用于:
SELECT *
FROM unnest (ARRAY[(1, 'foo')::my_type, (2, 'bar')::my_type]
, ARRAY[(3, 'baz')::my_type, (4, 'bak')::my_type]) n(a, b);使用:
SELECT *
FROM unnest (ARRAY[(1, 'foo')::text, (2, 'bar')::text]
, ARRAY[(3, 'baz')::text, (4, 'bak')::text]) WITH ORDINALITY AS t(first_col, second_col);https://stackoverflow.com/questions/32273661
复制相似问题