Why is a check constraint not working ? - Mailing list pgsql-general

From David Gauthier
Subject Why is a check constraint not working ?
Date
Msg-id CAMBRECD6TcGxJPzO3WwXZ7m4Kg5qMF+My+mbxtMnwcaqwFFDtA@mail.gmail.com
Whole thread Raw
Responses Re: Why is a check constraint not working ?
List pgsql-general
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 ?   

pgsql-general by date:

Previous
From: Durgamahesh Manne
Date:
Subject: Regarding db performance improvement
Next
From: "David G. Johnston"
Date:
Subject: Re: Why is a check constraint not working ?