2013-12-09 74 views
0

我有一個Postgres數據庫中的消息表。 當用戶讀取屬於一組的消息或一組消息時,我收集消息id,並在SELECT查詢後,將讀取標誌更新爲TRUE。Postgres - 組合SELECT和UPDATE

所以這只是兩個簡單的查詢,仍然記憶友好。但我不知道是否可以改進,也許通過結合SELECTUPDATE查詢?我使用PHP/PDO進行數據庫訪問。

+0

然後,你想要做一個'SELECT'和'UPDATE'的查詢嗎? – Minoru

+0

您不能混合使用Read和Write語句。 –

+0

你可以做到這一點,但沒有真正的收益http://stackoverflow.com/questions/9919056/implementing-an-update-on-select-in-postgres – foibs

回答

1

有Postgres的UPDATE聲明RETURNING clause

UPDATE msg_tbl 
SET read = TRUE 
WHERE msg_id = ? 
RETURNING *; 

但是,這僅僅是一個進步,如果所有的行實際上需要UPDATE。如果有一些已經有read = TRUE會導致空更新結束比SELECT更昂貴和一個單獨的UPDATE與另外的WHERE read = FALSE