문제

Consider this CTE:

WITH division_by_zero AS (
  SELECT 1/0
)
SELECT 42

It returns 42 instead of raising an error. How can I force PostgreSQL to evaluate the SELECT 1/0?

도움이 되었습니까?

해결책

That is because the main query doesn't reference division_by_zero anywhere.

The documentation says:

[...] PostgreSQL's implementation evaluates only as many rows of a WITH query as are actually fetched by the parent query.

That is zero in your case.

If you want the CTE to be executed, you could for example add a WHERE condition like

WHERE EXISTS (SELECT 1 FROM division_by_zero)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 dba.stackexchange
scroll top