Re: unexpected check constraint violation
| От | Scott Marlowe |
|---|---|
| Тема | Re: unexpected check constraint violation |
| Дата | |
| Msg-id | dcc563d10903231528k19cf55f6ia58d249a77180faf@mail.gmail.com обсуждение исходный текст |
| Ответ на | Re: unexpected check constraint violation (Jacek Becla <becla@slac.stanford.edu>) |
| Ответы |
Re: unexpected check constraint violation
|
| Список | pgsql-general |
On Mon, Mar 23, 2009 at 2:52 PM, Jacek Becla <becla@slac.stanford.edu> wrote:
> Thanks Ries. Do you know if that is a postgres feature or a bug?
It's not a bug, it's lack of precision in the definition on your part
being interpreted by pgsql. When you create the table, you get this:
create table t(d real, check(d>=0.00603));
\d t
Table "public.t"
Column | Type | Modifiers
--------+------+-----------
d | real |
Check constraints:
"t_d_check" CHECK (d >= 0.00603::double precision)
Note that having not been told the type for the check constraint,
pgsql defaults to double precision. So, in effect, your table
creation was this:
create table t(d real, check(d>=0.00603::double precision));
You can either cast the check constraint, or change the field type to
match double precision.
create table t(d double precision, check(d>=0.00603::double precision));
create table t(d real, check(d>=0.00603::real));
Either of those will work properly.
В списке pgsql-general по дате отправления: