Skip site navigation (1) Skip section navigation (2)

Peripheral Links

Header And Logo

PostgreSQL
| The world's most advanced open source database.

Site Navigation

Search for
  Advanced Search

Re: domains and serial



BillR wrote:
> Is it not possible to set up a domain using this construct?  I will have 
> a lot of tables using integer and big integer types as primary key 
> identifier fields.  It would make things simpler if I can use the serial 
> construct in a domain instead of using an int or bigint in the domain, 
> and then change each field in each table requiring a serial or bigserial 
> construct.
> 
> I just tried to create a domain using a bigserial type. 
> 
> CREATE DOMAIN Identifier_DM AS bigserial;
> 
> I received the error message:
> 
> ERROR: type "bigserial" does not exist
> SQL state: 42704
> 
> I tried to run this in both pgadminIII and in data architect 3.5.

Yea, that isn't going to work because if you did that, all columns
created with that domain name would have the same default sequence. 
See:
	
	test=> CREATE TABLE test(x bigserial);
	NOTICE:  CREATE TABLE will create implicit sequence "test_x_seq" for serial column "test.x"
	CREATE TABLE
	test=> \d test
	                        Table "public.test"
	 Column |  Type  |                    Modifiers
	--------+--------+--------------------------------------------------
	 x      | bigint | not null default nextval('test_x_seq'::regclass)

I don't see how we would ever get that working for domains.  The best we
could do would be to have each new domain reference create a new
sequence and default string, but then you just have the bigserial
behavior in a domain, which doesn't seem worth it.

-- 
  Bruce Momjian   bruce(at)momjian(dot)us
  EnterpriseDB    http://www.enterprisedb.com

  + If your life is a hard drive, Christ can be your backup. +



Home | Main Index | Thread Index

Privacy Policy | PostgreSQL Archives hosted by Command Prompt, Inc. | Designed by tinysofa
Copyright © 1996 – 2008 PostgreSQL Global Development Group