我在使用PostgreSQL 9.4.4。
我有一个用于存储聊天记录的表messages
。当用户收到每条消息时,其字段read
设置为1。
当客户端请求所有消息时,我希望SELECT * FROM messages
和UPDATE messages SET read = 1
仅限某些行(其中user_id
不等于请求者的ID)。
此查询仅返回更新的行,因此这不是我要查找的内容。
UPDATE messages SET read = 1 WHERE user_id != $1 RETURNING *;
有没有办法通过单个查询执行此操作?
感谢任何帮助。
答案 0 :(得分:2)
那么,如果你把你的查询结合起来怎么样呢
UPDATE messages SET read = 1 WHERE user_id != $1;select * from messages;
那么,在这种情况下,请考虑将查询包装在存储过程中并从后面的node.js
代码中调用,如下所示[**注意:它是一个示例proc代码,并且每个postgresql可能没有完全相似的语法]
create procedure sp_updatedata (parameter int)
as
begin
UPDATE messages SET read = 1 WHERE user_id != parameter;
select * from messages;
end