Обсуждение: CHECK clause doesn't work with CASE clause
Hi folks,
I have a problem with a CHECK clause that doesn't seem to work properly. The
CREATE TABLE statement looks like this:
CREATE TABLE epilepsy_information ( [...] epilepsy_class Char CHECK (epilepsy_class IN ('f',
'g','n')), focus Integer REFERENCES focus(id) CHECK (
CASE WHEN ((focus <> NULL) AND (epilepsy_class = 'f')) THEN
TRUE WHEN ((focus <> NULL) AND (epilepsy_class IN ('g',
'n'))) THEN FALSE END), [...]
);
It shouldn't be possible to insert a value into focus when epilepsy_class
has one of the values 'g' or 'n'. But it is. Can anyone help?
Thanx sincerefully,
Joerg
"J�rg Holetschek" <mail2holly@gmx.de> writes:
> CASE
> WHEN ((focus <> NULL) AND (epilepsy_class = 'f')) THEN
> TRUE
Try "focus IS NOT NULL".
regards, tom lane
On Thu, Jun 27, 2002 at 11:52:54AM +0200, J?rg Holetschek wrote:
> Hi folks,
>
> I have a problem with a CHECK clause that doesn't seem to work properly. The
> CASE
> WHEN ((focus <> NULL) AND (epilepsy_class = 'f')) THEN
> TRUE
> WHEN ((focus <> NULL) AND (epilepsy_class IN ('g',
> 'n'))) THEN FALSE
> END),
The condition "focus <> NULL" can't ever come out true. You probably
mean IS NOT NULL.
Richard
On Thursday 27 Jun 2002 10:52 am, Jörg Holetschek wrote:
> Hi folks,
>
> I have a problem with a CHECK clause that doesn't seem to work properly.
> WHEN ((focus <> NULL) AND (epilepsy_class = 'f')) THEN
> WHEN ((focus <> NULL) AND (epilepsy_class IN ('g',
> It shouldn't be possible to insert a value into focus when epilepsy_class
> has one of the values 'g' or 'n'. But it is. Can anyone help?
Should that not be "IS NOT NULL"?
- Richard Huxton