로드 균형 조정을 사용하는 pgpool-II를 실행 중이므로 클러스터의 두 서버에 읽기 전용 쿼리가 전송됩니다.업데이트를 통한 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을 얻을 수있는, 그래서 나는 밖으로 분리한다 쓰다?