我为我的API编写了查询,如果资源不处于请求的有效状态,则必须返回,如果资源不存在,则返回not found
。SQL更新:如果行已更新并且存在,则返回
我不想向数据库发送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
你的方法看起来不错。 –