From: | Niklas Johansson <spot(at)tele2(dot)se> |
---|---|
To: | Risto Tamme <risto(at)ektaco(dot)ee> |
Cc: | <pgsql-sql(at)postgresql(dot)org> |
Subject: | Re: Table constraints and INSERT |
Date: | 2006-05-17 10:49:38 |
Message-ID: | 4FECA253-3236-4619-B317-765B4CBE9DDD@tele2.se |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-sql |
On 17 maj 2006, at 08.42, Risto Tamme wrote:
> INSERT INTO "PART" ("P_PARTKEY","P_RETAILPRICE") VALUES(999,90109.89);
>
> but it fails: ERROR: new row for relation "PART" violates check
> constraint "PART_check"
The P_PARTKEY column is an integer, which means the expression
P_PARTKEY/10 will yield 99, *not* 99.9.
Try executing
SELECT 90000 + 999/10 + 999/10;
from psql or some GUI-utility; the result is 90108.
> When you check using your head or pocket calculator then this INSERT
> seems to be correct. Is it some floating point mystery?
> Is there some trick?
You must cast the integer column to a float or numeric, try:
SELECT 90000 + 999::numeric/10 + 999::numeric/100;
In your case:
CHECK ("P_RETAILPRICE" = (90000 + "P_PARTKEY"::numeric / 10 +
"P_PARTKEY"::numeric / 100)
Sincerely,
Niklas Johansson
Phone: +46-322-108 18
Mobile: +46-708-55 86 90
From | Date | Subject | |
---|---|---|---|
Next Message | Tom Lane | 2006-05-17 14:06:42 | Re: Recursive SELECT problem |
Previous Message | Dave Page | 2006-05-17 10:42:10 | Recursive SELECT problem |