"A. Kretschmer" <andreas(dot)kretschmer(at)schollglas(dot)com> writes:
> test=# create function check_b() returns bool as $$ declare s int; begin select into s sum(i) from b; if s > 3 then return true; else return false; end if; end;$$ language plpgsql;
> test=*# create table a (i int check(check_b()));
This is unsupported, and will fail in *many* situations not only
pg_dump. A check constraint is only expected to examine the current
row of its table.
regards, tom lane