PostgreSQL �� SEQUENCE �� CACHE �̓���

PostgreSQL �� SEQUENCE �ɂ� CACHE �Ƃ����ݒ肪����܂��B (Oracle �Ȃǂɂ�����܂�)

���̋@�\�͍������̂��߂̂��̂ŁA���O�� SEQUENCE ���܂Ƃ߂� �擾���Ă����A��ʂ� SEQUENCE �𔭍s����Ƃ��� ���x�� SEQUENCE ���X�V���Ȃ��悤���܂��B

���ۂ̓��������Ă݂܂��B

db=# CREATE SEQUENCE test_seq CACHE 3;

CACHE �̂ݐݒ肵�āi���̓f�t�H���g�Łj�쐬���܂����B
���̂悤�ɐݒ肳��Ă��܂��B

db=# SELECT last_value, cache_value FROM test_seq;

-[ RECORD 1 ]--
last_value  | 1
cache_value | 3

nextval() �Œl���擾���܂��B

db=# SELECT nextval('test_seq'); �� 1 ���Ԃ�

SEQUENCE �͎��̂悤�ɂȂ�܂��B

db=# SELECT last_value, cache_value FROM test_seq;

-[ RECORD 1 ]--
last_value  | 3
cache_value | 3

1 �񂵂� nextval() ���Ă��܂��� last_value �� 3 �ɂȂ��Ă��܂��B ����� 1 ���擾�����Ƃ��� 2, 3 ���L���b�V���Ƃ��Ď擾���Ă��邽�߂ł��B

������� nextval() �𑱂���� 2, 3 ���擾�ł��܂��B

db=# SELECT nextval('test_seq'); �� 2 ���Ԃ�
db=# SELECT nextval('test_seq'); �� 3 ���Ԃ�

����ŃL���b�V�����������g���؂��Ă��܂����̂ł��� ����� nextval() ���Ă݂܂��B

db=# SELECT nextval('test_seq'); �� 4 ���Ԃ�

���̏�Ԃ� SEQUENCE �͎��̂悤�ɂȂ�܂��B

db=# SELECT last_value, cache_value FROM test_seq;

-[ RECORD 1 ]--
last_value  | 6
cache_value | 3

���̂悤�ɁA�L���b�V�����g���؂�ƐV�����L���b�V�����擾���Ȃ����܂��B �f�t�H���g�ł� CACHE �� 1 �Ȃ̂Ŏ擾���邲�ƂɃL���b�V�����g���؂��Ă���킯�ł��B

�L���b�V���̓Z�b�V�������ł̂ݗL���ł��B ���̏�Ԃ́A���̃Z�b�V�����ȊO����� 6 �܂Ŏg�p�ς݂Ƃ��Ĉ������� �ʂ̃Z�b�V������ nextval() ����Ǝ��̂悤�� 7 ���Ԃ�܂��B

[�ʃZ�b�V����]
db=# SELECT nextval('test_seq'); �� 7 ���Ԃ�

[���̃Z�b�V����]
db=# SELECT nextval('test_seq'); �� 5 ���Ԃ�

���̂��߃L���b�V�����g�p����� SEQUENCE �̒l�����n��� ���΂Ȃ����Ƃ�����̂Œ��ӂ��K�v�ł��B

Google �T�C�g������

Amazon�A�\�V�G�C�g