1
我正在運行啓用了負載平衡的pgpool-II,以便它將只讀查詢發送到羣集中的兩臺服務器。使用UPDATE更新CTE的pgpool處理
但是,在某些情況下,我擁有包含UPDATE命令的CTE查詢,但底層查詢是SELECT,因此pgpool將其發送給從服務器,並且由於只讀屬性而失敗。
例如,下面的查詢查找匹配的顯示,並且在同一時間觀看它們標記:
WITH matches AS (
WITH user_liked AS (
SELECT liked_user_id FROM likes WHERE user_id='x' AND active IS TRUE
)
SELECT user_id, liked_user_id, liked_user_viewed, created_ts, matched_ts AS pointer
FROM likes
WHERE
user_id IN(SELECT * FROM user_liked)
AND
active IS TRUE
AND
liked_user_id='x'
ORDER BY matched_ts DESC
),
update_liked_user_viewed AS (
UPDATE likes
SET liked_user_viewed=TRUE
WHERE liked_user_id='x' AND user_id IN(SELECT user_id FROM matches)
)
SELECT * FROM matches
任何建議,以獲得pgpool認識到這是一個寫入查詢,所以我應該分離出寫?