create_sequence.l
上传用户:blenddy
上传日期:2007-01-07
资源大小:6495k
文件大小:5k
源码类别:

数据库系统

开发平台:

Unix_Linux

  1. ." This is -*-nroff-*-
  2. ." XXX standard disclaimer belongs here....
  3. ." $Header: /usr/local/cvsroot/pgsql/src/man/Attic/create_sequence.l,v 1.6 1998/08/30 21:03:19 scrappy Exp $
  4. .TH "CREATE SEQUENCE" SQL 07/13/98 PostgreSQL PostgreSQL
  5. .SH NAME
  6. create sequence - create a new sequence number generator
  7. .SH SYNOPSIS
  8. .nf
  9. fBcreate sequencefR seqname 
  10. [fBincrementfP incby_value] 
  11. [fBminvaluefP min_value] 
  12. [fBmaxvaluefP max_value] 
  13. [fBstartfP start_value] 
  14. [fBcachefP cache_value] 
  15. [fBcyclefP] 
  16. .fi
  17. .SH DESCRIPTION
  18. .BR "Create sequence"
  19. will enter a new sequence number generator into the current data base.
  20. Actually, a new single-record
  21. .BR table
  22. with name 
  23. .IR seqname
  24. will be created and initialized. 
  25. The generator will be
  26. *(lqowned*(rq by the user issuing the command.
  27. .PP
  28. The 
  29. .BR increment
  30. clause is optional. A positive value will make an ascending sequence,
  31. negative - descending. Default value is 1. 
  32. .PP
  33. The optional integer
  34. .BR minvalue
  35. determines the minimum value the sequence can generate. Defaults are
  36. 1/-2147483647 for ascending/descending sequences.
  37. .PP
  38. The optional integer
  39. .BR maxvalue
  40. determines the maximum value the sequence can generate. Defaults are
  41. 2147483647/-1 for ascending/descending sequences.
  42. .PP
  43. The optional
  44. .BR start
  45. value sets the first value to be generated.  Default is 
  46. .BR minvalue
  47. for ascending sequences and 
  48. .BR maxvalue
  49. for descending ones.
  50. .PP
  51. The
  52. .BR cache
  53. option enables sequence numbers to be preallocated and 
  54. stored in memory for faster access. The minimum value is 1 
  55. (one value will be allocated at a time, i.e., no cache)
  56. and that is the default.  See below for details.
  57. .PP
  58. The optional
  59. .BR cycle
  60. keyword may be used to enable the sequence to continue after the 
  61. .BR maxvalue/minvalue 
  62. has been reached by ascending/descending sequence.
  63. If the limit is reached, the next number generated will be 
  64. whatever the 
  65. .BR minvalue/maxvalue 
  66. is.
  67. .PP
  68. After a sequence object has been created, you may use the function
  69. .BR nextval
  70. with the sequence name as argument to generate a new number from the
  71. specified sequence.
  72. .PP
  73. The function
  74. .BR currval
  75. ('sequence_name')
  76. may be used to re-fetch the number returned by the last call to
  77. .BR nextval
  78. for the specified sequence in the current session.
  79. .BR NOTE: 
  80. currval will return an error if nextval has never been called for the
  81. given sequence in the current backend session.  Also beware that it
  82. does not give the last number ever allocated, only the last one allocated
  83. by this backend.
  84. .PP
  85. The function
  86. .BR setval
  87. ('sequence_name', value)
  88. may be used to set the current value of the specified sequence.
  89. The next call to
  90. .BR nextval
  91. will return the given value + the sequence increment.
  92. .PP
  93. Use a query like
  94. .nf
  95. SELECT * FROM <sequence_name>;
  96. .fi
  97. to get the parameters of a sequence.  Aside from fetching the original
  98. parameters, you can use
  99. .nf
  100. SELECT last_value FROM <sequence_name>;
  101. .fi
  102. to obtain the last value allocated by any backend.
  103. .PP
  104. Low-level locking is used to ensure that multiple backends can safely use
  105. a sequence object concurrently.
  106. .PP
  107. .BR NOTE: 
  108. Unexpected results may be obtained if a cache setting greater than one
  109. is used for a sequence object that will be used concurrently by multiple
  110. backends.  Each backend will allocate "cache" successive sequence values
  111. during one access to the sequence object and increase the sequence
  112. object's last_value accordingly.  Then, the next cache-1 uses of nextval
  113. within that backend simply return the preallocated values without touching
  114. the shared object.  So, numbers allocated but not used in the current session
  115. will be lost.  Furthermore, although multiple backends are guaranteed to
  116. allocate distinct sequence values, the values may be generated out of
  117. sequence when all the backends are considered.  (For example, with a cache
  118. setting of 10, backend A might reserve values 1..10 and return nextval=1, then
  119. backend B might reserve values 11..20 and return nextval=11 before backend
  120. A has generated nextval=2.)  Thus, with a cache setting of one it is safe
  121. to assume that nextval values are generated sequentially; with a cache
  122. setting greater than one you should only assume that the nextval values
  123. are all distinct, not that they are generated purely sequentially.
  124. Also, last_value will reflect the latest value reserved by any backend,
  125. whether or not it has yet been returned by nextval.
  126. .PP
  127. .SH EXAMPLES
  128. .nf
  129. --
  130. -- Create sequence seq caching 2 numbers, starting with 10
  131. --
  132. create sequence seq cache 2 start 10;
  133. .fi
  134. .nf
  135. --
  136. -- Select next number from sequence
  137. --
  138. select nextval ('seq');
  139. .fi
  140. .nf
  141. --
  142. -- Use sequence in insert
  143. --
  144. insert into table _table_ values (nextval ('seq'),...);
  145. .nf
  146. --
  147. -- Set the sequence value after a copy in
  148. --
  149. create function table_id_max() returns int4
  150.     as 'select max(id) from _table_' 
  151.     language 'sql';
  152. copy _table_ from 'input_file';
  153. select setval('seq', table_id_max());
  154. .fi
  155. .SH "SEE ALSO"
  156. drop_sequence(l).