PG Bug reporting form <noreply(at)postgresql(dot)org> writes:
> Summary: I defined a check constraint `project_limits` using
> [SQL functions](https://www.postgresql.org/docs/9.1/xfunc-sql.html).
This is not a bug; you've ignored the restriction that check constraints
must be immutable. See the "Notes" at the bottom of this section:
https://www.postgresql.org/docs/current/ddl-constraints.html#DDL-CONSTRAINTS-CHECK-CONSTRAINTS
In the particular case at hand, I think the behavior you're complaining
about stems from the fact that the CHECK condition is evaluated before
the actual row insertion has happened.
regards, tom lane