CREATE SEQUENCE

Name

CREATE SEQUENCE -- ����һ���µ����з�����

Synopsis

CREATE [ TEMPORARY | TEMP ] SEQUENCE name [ INCREMENT [ BY ] increment ]
    [ MINVALUE minvalue | NO MINVALUE ] [ MAXVALUE maxvalue | NO MAXVALUE ]
    [ START [ WITH ] start ] [ CACHE cache ] [ [ NO ] CYCLE ]

����

CREATE SEQUENCE ����ǰ���ݿ�������һ���µ����к��������� ���������ͳ�ʼ��һ���µ���Ϊ name�ĵ��б���������Ϊʹ�ô�������û����С�

���������һ��ģʽ������ô����������ָ��ģʽ�д����ġ� ���������ڵ�ǰģʽ�д�����ʱ���д�����һ�������ģʽ�У�����������һ����ʱ���е�ʱ�� ���ܸ���ģʽ���� �����������ͬһģʽ�е��������У���������������ͼ��ͬ��

�����д����������ʹ�ú��� nextval�� currval���� nextval �������С���Щ������ Section 9.12 ������ϸ�ĵ���

�����㲻��ֱ�Ӹ���һ�����У��������ʹ����

SELECT * FROM name;

���һ�����еIJ����͵�ǰ״̬���ر������е� last_value �ֶ���ʾ�������˽��̷����������ֵ�� ����Ȼ����Щֵ�ڱ���ӡ������ʱ������Ѿ���ʱ�� --- �������������������ʹ�� nextval����

����

TEMPORARY �� TEMP

���������������δʣ���ô�����ж���ֻΪ����Ự������ �����ڻỰ������ʱ���Զ�ɾ��������ʱ���д��ڵ�ʱ�� ͬ�����������Dz��ɼ��ģ���ͬһ�Ự���������������ģʽ���ε��������õġ�

name

��Ҫ���������к�����������ģʽ���Σ���

increment

��ѡ�Ӿ� INCREMENT BY increment Ҫ����һ���µ�ֵ��Ӧ����ǰ����ֵ������ʲô��һ������������һ�����������У� һ������������һ���ݼ������С�ȱʡֵ��һ��1����

minvalue
NO MINVALUE

��ѡ���Ӿ� MINVALUE minvalue ����һ�����п����ɵ���Сֵ�� ���û����������Ӿ���������� NO MINVALUE����ô��ʹ��ȱʡ�� ȱʡ�ֱ��ǵ�������Ϊ 1 �ݼ�Ϊ -263-1��

maxvalue
NO MAXVALUE

ʹ�ÿ�ѡ�Ӿ� MAXVALUE maxvalue �������е����ֵ�� ���û����������Ӿ���������� NO MAXVALUE����ô��ʹ��ȱʡ�� ȱʡ�ķֱ��ǵ���Ϊ -263-1���ݼ�Ϊ -1��

start

��ѡ�� START WITH start �Ӿ� ʹ���п��Դ�����λ�ÿ�ʼ��ȱʡ��ʼֵ�ǵ�������Ϊ minvalue �ݼ�����Ϊ maxvalue.

cache

CACHE cache ѡ��ʹ���к�Ԥ���䲢��Ϊ���ٷ��ʴ洢���ڴ����档 ��Сֵ��Ҳ��ȱʡֵ����1��һ��ֻ������һ��ֵ, Ҳ����˵û�л��棩��Ҳ��ȱʡ��

CYCLE
NO CYCLE

��ѡ��CYCLE�ؼ��ֿ�����ʹ���е��� ���ֵ��maxvalue�� �� ��Сֵ��minvalue�� ʱ�ɸ�λ��������ȥ������ﵽ���ޣ����ɵ���һ�����ݽ��ֱ��� ��Сֵ��minvalue�� �� ���ֵ��maxvalue����

��������˿�ѡ�Ĺؼ��� NO CYCLE�� ��ô�����дﵽ�����ֵ֮���κζ� nextval �ĵ��ö�ǿ����һ������ �����û������ CYCLE Ҳû������ NO CYCLE�� ��ô NO CYCLE ��ȱʡ��

ע��

ʹ�� DROP SEQUENCE �����ɾ�����С�

�����ǻ��� bigint ����ģ�����䷶Χ���ܳ������ֽڵ�������Χ��-9223372036854775808 �� 9223372036854775807���� ��һЩ��һ���ƽ̨�Ͽ���û�ж԰��ֽ������ı�����֧�֣� �������������ʹ����ͨ�� integer ���㣨��Χ�� -2147483648 �� +2147483647����

��� cache ���ô���һ�� ����������ж��󽫱����ڲ�����Ự�ij��ϣ���ô���ܻ��в���Ԥ�ϵĽ�������� ÿ���Ự��һ�η������ж���Ĺ����н����䲢������������ֵ��������Ӧ�������ж���� last_value�� ������ͬһ�������е����� cache-1 �� nextval ��ֻ�Ƿ���Ԥ�ȷ������ֵ�������ö����ж�����ˣ��κ���һ���Ự�з��䵫��û��ʹ�õ����ֶ����ڻỰ��β��ʧ�����������������"�ն�"��

���⣬����ϵͳ��֤Ϊ����Ự�������������ֵ����������������лỰ�� ��ô�����ֵ���ܻᶪʧ˳�򡣱��磬��� cache ����Ϊ 10����ô�Ự A ������ 1..10 ���ҷ��� nextval=1�� Ȼ��Ự B ���ܻᱣ�� 11..20 Ȼ���ڻỰ A ���� nextval=2 ֮ǰ���� nextval=11����ˣ����� cache ����Ϊһ����������ǿ��԰�ȫ�ؼ��� nextval ֵ��˳�����ɵģ� ������� cache ���õô���һ�� ��ô��ֻ�ܼ��� nextval ֵ����Ψһ�ã���������ȫ˳������ɡ� ͬ����last_value ����ӳ�κλỰ������������ֵ���������Ƿ����� nextval ���ء�

����һ����������������������ִ�е� setval �����ᱻ�����Ựע�⵽��ֱ�������ù����ǻ������ֵ��

����

����һ���� serial �ĵ������У���101��ʼ��

CREATE SEQUENCE serial START 101;

�Ӵ�������ѡ����һ�����֣�

SELECT nextval ('serial');
    
nextval
-------
    114

��һ�� INSERT ��ʹ�ô����У�

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

��һ�� COPY FROM ��������У�

BEGIN;
    COPY distributors FROM 'input_file';
    SELECT setval('serial', max(id)) FROM distributors;
END;

������

CREATE SEQUENCE �� SQL:2003 �������� PostgreSQL ��ѭ��׼��ֻ����������⣺