CHECK constraints are supposed to run IMMUTABLE checks. What passes OK for a row at one time should pass OK at any time. That's how CHECK constraints are defined in the SQL standard. That's also the reason for this restriction (per documentation):
Now, expressions in CHECK constraints are allowed to use functions, even user-defined functions. Those should be restricted to IMMUTABLE functions, but Postgres does not currently enforce this. According to this related discussion on pgsql-hackers, one reason is to allow references to the current time, which is not IMMUTABLE by nature.
##PostgreSQL 9.2 or later
###pg_dump option --exclude-table-data
But complications with other constraints on the same table might ensue. There is an even better solution: ###NOT VALID
There is the NOT VALID modifier for constraints. Only available for FK constraint in v9.1, but this was extended to CHECK constraints in 9.2. Per documentation:
A plain postgres dump file consists of three "sections":
Here is where it gets interesting. Per documentation: