Re: [SQL] How to handle a requirement for nextval

From: Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>
To: wwwadmin(at)wizard(dot)ca, PGsql <pgsql-sql(at)postgreSQL(dot)org>
Cc: maillist(at)candle(dot)pha(dot)pa(dot)us
Subject: Re: [SQL] How to handle a requirement for nextval
Date: 1998-05-19 07:27:50
Message-ID: l03110702b186e1a326b8@[147.233.159.109]
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

At 23:33 +0300 on 18/5/98, The Web Administrator wrote:

> What I want is that the Primary Key (Only Key) be type_id, and int, and
> the first item that I insert should have type_id as '1', next will be
> '2' etc..
> I could have every insert into this table include a type_id, but that
> seems unessary.
> Can I have something like default='nextval' ?

This is so much a faq, that I went to look at the FAQ. In fact, there is a
question there which is similar to this one, but I think its phrasing
defeats newbies rather than helps them. I for one have never encountered
fields of type SERIAL, and people might not think it's the same sort of
question. The answer is even more of a problem, because the most commonly
used method of doing this is summarised in "look at the create_sequence
manual", whereas the two less recommended methods (using OIDs and using an
auto-incrementing function) are discussed in detail.

Bruce, don't you agree? Perhaps change the phrasing of the question to "How
do I create an auto-incrementing field?"

As for the answer itself, here it is:

In order to create an auto-incrementing field - one which will
automatically receive the value 1 for the first row inserted, 2 for the
second, and so on - you have to define a sequence. For example:

CREATE SEQUENCE emp_no;

Then you define your table. Assuming you want an employee table in which
the emp_id field is autoincrementing, here is what you write:

CREATE TABLE emp
(
emp_id int4
DEFAULT nextval( 'emp_no' )
NOT NULL
-- Other fields here
);

Following that, when you want to insert a row, insert values for all other
fields except the emp_id field. It will insert its own value automatically.

For more information, read the man page "create_sequence".

Herouth

In response to

Responses

Browse pgsql-sql by date

  From Date Subject
Next Message Marin D 1998-05-19 07:54:53 Re: [SQL] Case in-sensitive searches
Previous Message Jerome Knobl 1998-05-19 06:59:39 Re: [SQL] Case in-sensitive searches