create_sequence man page on BSDi

Man page or keyword search:  
man Server   6284 pages
apropos Keyword Search (all sections)
Output format
BSDi logo
[printable version]

CREATE SEQUENCE()		 SQL Commands		     CREATE SEQUENCE()

NAME
       CREATE SEQUENCE - Creates a new sequence number generator

SYNOPSIS
       CREATE SEQUENCE seqname [ INCREMENT increment ]
	   [ MINVALUE minvalue ] [ MAXVALUE maxvalue ]
	   [ START start ] [ CACHE cache ] [ CYCLE ]

   INPUTS
       seqname
	      The name of a sequence to be created.

       increment
	      The  INCREMENT  increment	 clause	 is optional. A positive value
	      will make an ascending sequence, a  negative  one	 a  descending
	      sequence.	 The default value is one (1).

       minvalue
	      The  optional  clause  MINVALUE  minvalue determines the minimum
	      value  a	sequence  can  generate.  The  defaults	 are   1   and
	      -2147483647  for	ascending  and	descending  sequences, respec‐
	      tively.

       maxvalue
	      The optional clause MAXVALUE  maxvalue  determines  the  maximum
	      value  for  the sequence. The defaults are 2147483647 and -1 for
	      ascending and descending sequences, respectively.

       start  The optional START start clause enables the  sequence  to	 begin
	      anywhere.	  The default starting value is minvalue for ascending
	      sequences and maxvalue for descending ones.

       cache  The CACHE cache option enables sequence numbers to  be  preallo‐
	      cated  and stored in memory for faster access. The minimum value
	      is 1 (only one value can be generated at a time, i.e., no cache)
	      and this is also the default.

       CYCLE  The optional CYCLE keyword may be used to enable the sequence to
	      wrap around when the maxvalue or minvalue has been reached by an
	      ascending	 or  descending sequence respectively. If the limit is
	      reached, the next number generated will be the minvalue or  max‐
	      value, respectively.

   OUTPUTS
       CREATE Message returned if the command is successful.

       ERROR: Relation 'seqname' already exists
	      If the sequence specified already exists.

       ERROR: DefineSequence: MINVALUE (start) can't be >= MAXVALUE (max)
	      If the specified starting value is out of range.

       ERROR: DefineSequence: START value (start) can't be < MINVALUE (min)
	      If the specified starting value is out of range.

       ERROR: DefineSequence: MINVALUE (min) can't be >= MAXVALUE (max)
	      If the minimum and maximum values are inconsistent.

DESCRIPTION
       CREATE  SEQUENCE	 will  enter  a new sequence number generator into the
       current data base. This involves creating and initializing a  new  sin‐
       gle-row	table  with  the name seqname.	The generator will be owned by
       the user issuing the command.

       After a sequence is created, you may  use  the  function	 nextval('seq‐
       name')  to  get	a  new	number	from  the sequence.  The function cur‐
       rval('seqname') may be used to determine the  number  returned  by  the
       last  call to nextval('seqname') for the specified sequence in the cur‐
       rent session.  The function setval('seqname', newvalue) may be used  to
       set  the	 current  value	 of  the specified sequence.  The next call to
       nextval('seqname') will return the given value plus the sequence incre‐
       ment.

       Use a query like

       SELECT * FROM seqname;

       to examine the parameters of a sequence.	 As an alternative to fetching
       the parameters from the original definition as above, you can use

       SELECT last_value FROM seqname;

       to obtain the last value allocated by any backend.

       To avoid blocking of concurrent transactions that obtain	 numbers  from
       the  same  sequence, a nextval operation is never rolled back; that is,
       once a value has been fetched it is considered used, even if the trans‐
       action  that  did  the  nextval	later  aborts. This means that aborted
       transactions may leave unused "holes" in the sequence of assigned  val‐
       ues. setval operations are never rolled back, either.

	      Caution:	Unexpected  results may be obtained if a cache setting
	      greater than one is used for a sequence object that will be used
	      concurrently  by	multiple  backends. Each backend will allocate
	      and cache successive sequence values during one  access  to  the
	      sequence	object	and  increase the sequence object's last_value
	      accordingly. Then, the next cache-1 uses of nextval within  that
	      backend  simply  return the preallocated values without touching
	      the shared object. So, numbers allocated but  not	 used  in  the
	      current  session	will  be  lost. Furthermore, although multiple
	      backends are guaranteed to allocate  distinct  sequence  values,
	      the  values  may be generated out of sequence when all the back‐
	      ends are considered. (For example, with a cache setting  of  10,
	      backend  A might reserve values 1..10 and return nextval=1, then
	      backend B might reserve  values  11..20  and  return  nextval=11
	      before  backend  A  has generated nextval=2.) Thus, with a cache
	      setting of one it is safe to assume that nextval values are gen‐
	      erated  sequentially;  with a cache setting greater than one you
	      should only assume that the nextval values are all distinct, not
	      that  they  are generated purely sequentially.  Also, last_value
	      will reflect the latest value reserved by any  backend,  whether
	      or  not it has yet been returned by nextval.  Another considera‐
	      tion is that a setval executed on such a sequence	 will  not  be
	      noticed  by  other backends until they have used up any preallo‐
	      cated values they have cached.

   NOTES
       Use DROP SEQUENCE to remove a sequence.

       Each backend uses its own cache to store preallocated numbers.  Numbers
       that  are  cached  but  not  used  in the current session will be lost,
       resulting in "holes" in the sequence.

USAGE
       Create an ascending sequence called serial, starting at 101:

       CREATE SEQUENCE serial START 101;

       Select the next number from this sequence:

       SELECT NEXTVAL ('serial');

       nextval
       -------
	   114

       Use this sequence in an INSERT:

       INSERT INTO distributors VALUES (NEXTVAL('serial'),'nothing');

       Set the sequence value after a COPY FROM:

       CREATE FUNCTION distributors_id_max() RETURNS INT4
	   AS 'SELECT max(id) FROM distributors'
	   LANGUAGE 'sql';
       BEGIN;
	   COPY distributors FROM 'input_file';
	   SELECT setval('serial', distributors_id_max());
       END;

COMPATIBILITY
   SQL92
       CREATE SEQUENCE is a Postgres language extension.  There is  no	CREATE
       SEQUENCE statement in SQL92.

SQL - Language Statements	 29 March 2001		     CREATE SEQUENCE()
[top]

List of man pages available for BSDi

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Tweet
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
....................................................................
Vote for polarhome
Free Shell Accounts :: the biggest list on the net