2014-06-05 1 views
1

다음 존재하지 않는 내 쿼리입니다공통 테이블 식; 오류 : 관계 "stkpos는"예를 들어

WITH stkpos as (
select * from mytbl 
), 
updt as (
update stkpos set field=(select sum(fieldn) from stkpos) 
) 
select * from stkpos 
MS-SQL과 다른 DB를, PostgreSQL을의 CTE 약관과 달리

ERROR: relation "stkpos" does not exist

+3

글쎄, 쿼리 결과를 업데이트 할 수 없습니다. 그리고 CTE는 명명 된 하위 쿼리로, 진술 기간 동안 만 존재합니다. – vyegorov

+0

왜 CTE를 처음 사용 하시나요? '업데이트 mytbl 설정 필드 = (선택 합계 (필드)에서 mytbl)'괜찮아요 (나를 위해 이해가되지 않지만) –

+0

@ a_horse_with_no_name 이것은 내 실제 검색어가 아니므로 복잡하고 긴 쿼리 –

답변

2

보기처럼 다루어지지 않습니다. 그들은 암시적인 임시 테이블과 비슷합니다. 즉, 구체화되거나 플래너가 필터를 밀어 넣거나 필터를 끌어 올 수 없게됩니다.

이러한 결과 중 하나는 사용자가 업데이트 할 수 없다는 것입니다 왜냐하면 그들은 원래 데이터의 복사본이기 때문에보기 만이 아닙니다. 원하는 것을하기 위해 다른 방법을 찾아야합니다.

도움이 필요하시면 실제 문제의 축소 버전을 보여주는 명확하고 독립적 인 예제 (create table 문과 함께)가 포함 된 새 질문을 게시해야합니다. 실제로 우리가 성취하고자하는 것과 그 이유를 이해할 수있을만큼 충분합니다.