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
|
Список | 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 по дате отправления: