"Chris Fischer" <Chris.Fischer@channeladvisor.com> writes:
> alter table only t1 add constraint ck_col1 check (number <> 0);
The bug here is that we allow that. Continuing your example,
regression=# insert into t2 values(0);
INSERT 0 1
regression=# select * from t1;
col1
------
0
(1 row)
which sure looks to me like a violation of the principle of least
surprise.
This has come up before and I think the consensus was to disallow
non-inherited check constraints; not sure why it hasn't been done yet.
regards, tom lane