Thread: User defined type without single quotes
Hello.
I defined a new type to represent an unsigned int, but when I try do run a query it complains because it is not quoted and casted to my type.
Suppose I have a table:
-- my_uint32 is my new type
CREATE TABLE test (a my_uin32);
If I try to run this insert, postgres complain about the type:
INSERT INTO teste (a) VALUES (10);
But this one works:
NSERT INTO teste (a) VALUES ('10'::my_uint);
Is there a way to avoid the single quotes?
On Thu, 2013-04-04 at 19:50 -0300, Rodrigo Barboza wrote: > -- my_uint32 is my new type > CREATE TABLE test (a my_uin32); > > If I try to run this insert, postgres complain about the type: > INSERT INTO teste (a) VALUES (10); > > But this one works: > NSERT INTO teste (a) VALUES ('10'::my_uint); > > Is there a way to avoid the single quotes? > A constant like 10 is initially assigned one of the integer types (the exact rules are in the documentation). In order to be able to store that into a column of a custom type, you need to define a cast between the integer type and your type with at least assignment context.
Thank you, Peter!
On Sat, Apr 13, 2013 at 10:06 AM, Peter Eisentraut <peter_e@gmx.net> wrote:
On Thu, 2013-04-04 at 19:50 -0300, Rodrigo Barboza wrote:A constant like 10 is initially assigned one of the integer types (the
> -- my_uint32 is my new type
> CREATE TABLE test (a my_uin32);
>
> If I try to run this insert, postgres complain about the type:
> INSERT INTO teste (a) VALUES (10);
>
> But this one works:
> NSERT INTO teste (a) VALUES ('10'::my_uint);
>
> Is there a way to avoid the single quotes?
>
exact rules are in the documentation). In order to be able to store
that into a column of a custom type, you need to define a cast between
the integer type and your type with at least assignment context.