Column 'CHECK' Constraint: bug or ?

Started by Keary Suskaover 24 years ago4 messagesgeneral
Jump to latest
#1Keary Suska
hierophant@pcisys.net

It appears that Postgres checks column CHECK constraints when performing an
update regardless of whether the particular column is being updated. Perhaps
my understanding of column vs table constraints is incomplete but this
doesn't seem to be proper behavior, and I can't find it documented anywhere.

Can someone shed some light on this and whether I need to submit a bug
report?

PG v.7.0.3/Solaris-Sparc

Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"

#2Tom Lane
tgl@sss.pgh.pa.us
In reply to: Keary Suska (#1)
Re: Column 'CHECK' Constraint: bug or ?

Keary Suska <hierophant@pcisys.net> writes:

It appears that Postgres checks column CHECK constraints when performing an
update regardless of whether the particular column is being updated.

I believe that's true...

Perhaps my understanding of column vs table constraints is incomplete
but this doesn't seem to be proper behavior,

Why not? A constraint is a constraint, it should be valid whenever one
checks it.

regards, tom lane

#3Stephan Szabo
sszabo@megazone23.bigpanda.com
In reply to: Keary Suska (#1)
Re: Column 'CHECK' Constraint: bug or ?

On Wed, 19 Sep 2001, Keary Suska wrote:

It appears that Postgres checks column CHECK constraints when performing an
update regardless of whether the particular column is being updated. Perhaps
my understanding of column vs table constraints is incomplete but this
doesn't seem to be proper behavior, and I can't find it documented anywhere.

If I read spec correctly, a column check constraint is equivalent to a
table constraint of the same search condition (and name and
attributes) for purposes of checking the constraint which means it should
be valid at end of transaction/statement depending on the constraint
attributes (and we don't support deferred check right now).

#4Keary Suska
hierophant@pcisys.net
In reply to: Tom Lane (#2)
Re: Column 'CHECK' Constraint: bug or ?

From: Tom Lane <tgl@sss.pgh.pa.us>
Date: Thu, 20 Sep 2001 00:02:31 -0400

Perhaps my understanding of column vs table constraints is incomplete
but this doesn't seem to be proper behavior,

Why not? A constraint is a constraint, it should be valid whenever one
checks it.

The question is, should Postgres be checking it at all? I suppose one only
encounters this as a problem when they have a date-sensitive constraint
(based on CURRENT_DATE). I can't imagine that this is an uncommon need. Of
course, a trigger could be created to handle this, but it seems more
straightforward to use a CHECK constraint, since that's what it is for,
after all.

Keary Suska
Esoteritech, Inc.
"Leveraging Open Source for a better Internet"