Re: Table constraints and INSERT

Поиск
Список
Период
Сортировка
От Niklas Johansson
Тема Re: Table constraints and INSERT
Дата
Msg-id 4FECA253-3236-4619-B317-765B4CBE9DDD@tele2.se
обсуждение исходный текст
Ответ на Table constraints and INSERT  ("Risto Tamme" <risto@ektaco.ee>)
Ответы Re: Table constraints and INSERT  (Tom Lane <tgl@sss.pgh.pa.us>)
Список 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




В списке pgsql-sql по дате отправления:

Предыдущее
От: "Dave Page"
Дата:
Сообщение: Recursive SELECT problem
Следующее
От: Tom Lane
Дата:
Сообщение: Re: Recursive SELECT problem