Thread: A simple way to Create type ...?

A simple way to Create type ...?

From
ow
Date:
Hi,

I had a look at "create type" docs and it seems somewhat complex, involving
creation of functions and etc. I hope there's a simpler way for the following:

How should one declare a new custom type, say, "AddressType" that corresponds
internally to "varchar(50)". In other words, all columns that are assigned
"AddressType" would internally be "varchar(50)".

Example:
create type AddressType ... -- how to do it in a simple way?

create table ADDRESS
{ address_id      int           not null, street_address1 AdressType    not null, street_address2 AdressType    not
null,....
 
)

Thanks







__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com


Re: A simple way to Create type ...?

From
ow
Date:
--- ow <oneway_111@yahoo.com> wrote:
> Hi,
[...]
> How should one declare a new custom type, say, "AddressType" that corresponds
> internally to "varchar(50)". In other words, all columns that are assigned
> "AddressType" would internally be "varchar(50)".
> 
> Example:
> create type AddressType ... -- how to do it in a simple way?

I guess, ideally it'd be create type AddressType AS varchar(50) ;
but it does not work.

Any ideas? Thanks





__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com


Re: A simple way to Create type ...?

From
Rod Taylor
Date:
> I guess, ideally it'd be
>   create type AddressType AS varchar(50) ;
> but it does not work.

Only one keyword off. SQL calls this a domain.

They're limited in 7.3, but much improved (not yet perfect) for 7.4.

http://www.postgresql.org/docs/7.3/interactive/sql-createdomain.html

Re: A simple way to Create type ...?

From
Christopher Browne
Date:
oneway_111@yahoo.com (ow) writes:
> I had a look at "create type" docs and it seems somewhat complex, involving
> creation of functions and etc. I hope there's a simpler way for the following:
>
> How should one declare a new custom type, say, "AddressType" that corresponds
> internally to "varchar(50)". In other words, all columns that are assigned
> "AddressType" would internally be "varchar(50)".
>
> Example:
> create type AddressType ... -- how to do it in a simple way?
>
> create table ADDRESS
> {
>   address_id      int           not null,
>   street_address1 AdressType    not null,
>   street_address2 AdressType    not null,
>   ....
> )

CREATE TYPE is intended to do something a whole lot more
sophisticated than you want.

What you want instead is CREATE DOMAIN.

flexreg=# create domain addresstype varchar(50);
CREATE DOMAIN
flexreg=# create table address ( address_id integer not null, street1 addresstype not null, street2 addresstype);
CREATE TABLE
flexreg=# \d address       Table "public.address"  Column   |    Type     | Modifiers 
------------+-------------+-----------address_id | integer     | not nullstreet1    | addresstype | not nullstreet2
|addresstype | 
 
-- 
select 'cbbrowne' || '@' || 'cbbrowne.com';
http://www.ntlug.org/~cbbrowne/nonrdbms.html
"Although  Unix is  more reliable,  NT may  become more  reliable with
time"  --   Ron  Redman,  deputy  technical  director   of  the  Fleet
Introduction Division of the Aegis Program Executive Office, US Navy.


Re: A simple way to Create type ...?

From
ow
Date:
--- Rod Taylor <rbt@rbt.ca> wrote:
> Only one keyword off. SQL calls this a domain.
> 
> They're limited in 7.3, but much improved (not yet perfect) for 7.4.
> 
> http://www.postgresql.org/docs/7.3/interactive/sql-createdomain.html

Excellent news! Thanks






__________________________________
Do you Yahoo!?
Yahoo! SiteBuilder - Free, easy-to-use web site design software
http://sitebuilder.yahoo.com


Re: A simple way to Create type ...?

From
John DeSoi
Date:
On Tuesday, September 16, 2003, at 05:27 PM, Christopher Browne wrote:

> What you want instead is CREATE DOMAIN.
>
> flexreg=# create domain addresstype varchar(50);


The problem here is that you can't tell the difference between a 
addresstype column and a varchar(50) column in the row description 
information returned by SELECT. All columns just look like varchar(50). 
It would be nice if there was something as easy as CREATE DOMAIN but 
worked more like CREATE TYPE.

Best,

John DeSoi, Ph.D.