psql (9.6.7, server 11.3) I have a table...
dvdb=# \d+ dvm_events; Table "dvm.dvm_events" Column | Type | Modifiers | Storage | Stats target | Description ------------------+--------------------------+-----------+----------+--------------+---------------------------------------------------------------------- dvm_id | integer | not null | plain | | project | character varying | not null | extended | | status | character varying | | extended | | Check constraints: "dvm_events_status_check" CHECK (status::text = ANY (ARRAY['passed'::character varying, 'failed'::character varying, NULL::character varying]::text[])) (There's a lot more to the table than what you see here, but I took it out because it didn't look relevant) I believe it should disallow an insert with a status of "foo", but... dvdb=# insert into dvm_events (dvm_id,project,status) values (99999999,'mero','foo'); INSERT 0 1 This is outside of a transaction and definitely not in a transaction with deferred constraint checking. Check constraints seem to work fine if I create a test table having a constrained column. But this existing table seems to have constraints disabled for some reason. What could cause this ?