Thread: how do I DROP this CONSTRAINT?

how do I DROP this CONSTRAINT?

From
Alexey Borzov
Date:
Greetings!

   Well, here is the problem:
   A "production" table has a CHECK left from "development" days and I need
to delete it. It is not a foreign key, just a silly limit on a field's
value.
   Of course, I can perform a CREATE/DROP/RENAME ritual, but would
rather not, as the table is large and it is referenced by other
tables.
   I browsed the manual and found that CHECK's are kept in pg_relcheck
and their count in pg_class.

   So, the question:
   Can I just delete the record in pg_relcheck, decrement the counter
in pg_class and enjoy the results or will it have undesirable
side-effects?

--
Yours, Alexey V. Borzov, Webmaster of RDW.ru



Re: how do I DROP this CONSTRAINT?

From
Tom Lane
Date:
Alexey Borzov <borz_off@rdw.ru> writes:
>    Can I just delete the record in pg_relcheck, decrement the counter
> in pg_class and enjoy the results or will it have undesirable
> side-effects?

Should work; be careful to do the pg_class change last, else you'll
likely get inconsistency complaints.  IIRC, the pg_class change will
trigger relation-cache reload for the table, and the indicated number
of records had better match pg_relcache when that happens.

            regards, tom lane