【发布时间】:2021-10-08 16:42:41
【问题描述】:
我正在尝试在删除不同表中的值后更新表。
这是我对这个问题的简化函数查询:
create function updateoutfit(_id uuid, _title text DEFAULT NULL::text)
returns TABLE(id uuid, title text)
language sql
as
$$
WITH del AS (DELETE FROM outfit_garment WHERE outfit_garment.outfit_id = _id RETURNING outfit_id),
updateOutfit AS (
UPDATE outfit SET
title = _title
FROM del
WHERE outfit.id = del.outfit_id
RETURNING id, title
)
SELECT id,
title
from updateOutfit as outfit
group by id, title;
$$;
如果有delete返回的outfit_id就好了:
DELETE FROM outfit_garment WHERE outfit_garment.outfit_id = _id RETURNING outfit_id
但如果没有要删除的行则失败。我试过这样的事情:
DELETE FROM outfit_garment WHERE outfit_garment.outfit_id = '1234' RETURNING (SELECT '1234' as outfit_id );
但它仍然返回 0 行。
有没有办法解决这个问题或更好的方法?
我正在使用 postgres 13.2
【问题讨论】:
-
请始终声明您的 Postgres 版本。
标签: postgresql