Я написал запрос для моего API, где я должен вернуть , если ресурс не находится в допустимом состоянии для запроса или not found
, если ресурс не существует.SQL UPDATE: return, если строка обновлена и существует
Я не хочу отправлять 2 запроса в базу данных (чтобы проверить, существует ли ресурс в первую очередь, а затем обновить его). Поскольку просто проверка того, была ли обновлена строка, недостаточно, возможно, ресурс не существует.
Я всегда хочу возвращаемая строка, которая выглядит следующим образом:
exists | updated
--------+---------
t | t
(1 row)
Мой запрос работает, я просто интересно, если есть более простой подход к ...
WITH updates AS (
UPDATE abc
SET status = 'cancelled'
WHERE id = $1 AND status = 'active' RETURNING 1
)
SELECT
EXISTS(SELECT 1 FROM abc WHERE id = $1) as exists,
EXISTS(SELECT 1 FROM updates) as updated
Ваш метод кажется прекрасным. –