繝�ヵ繧ゥ繝ォ繝亥€、縲√す繝シ繧ア繝ウ繧ケ縲ヾERIAL蝙�

繝�ヵ繧ゥ繝ォ繝亥€、

INSERT縺ァ謖�ョ壹@縺ェ縺九▲縺溷�縺ッ騾壼ククNULL縺ォ縺ェ繧九′縲√≠繧区アコ縺セ縺」縺溷€、縲√∪縺溘�髢「謨ー縺ョ螳溯。檎オ先棡縺ェ縺ゥ縺ォ縺吶k縺薙→縺後〒縺阪k縲�
縺薙l繧�繝�ヵ繧ゥ繝ォ繝亥€、縺ィ縺�≧縲�

蛻怜錐 蝙擬 蛻カ邏Ь[ DEFAULT 繝�ヵ繧ゥ繝ォ繝亥€、];
  1. 谺。縺ョ�ウ�ア�ャ繧偵ヵ繧。繧、繝ォ縺ィ縺励※菴懈�縲ゑシ�default041.sql��

    
    
  2. 繝ュ繧ー繧、繝ウ逕サ髱「縺九i螳溯。後€�

    oddtbs=> \i default041.sql
    ...
    oddtbs=> insert into emp (code, name) values(564001, '驤エ譛ィ鄒ゥ逕キ');
    INSERT 0 1
    oddtbs=> insert into emp (code, name, gender, age) values(564002, '譁手陸豢句ュ�', 2, 30);
    INSERT 0 1
    oddtbs=> select * from emp;
      code  |   name   | gender | age |  hiredate
    --------+----------+--------+-----+------------
     564001 | 驤エ譛ィ鄒ゥ逕キ |      1 |  22 | 2009-08-12
     564002 | 譁手陸豢句ュ� |      2 |  30 | 2009-08-12
    (2 rows)
    
    窶サ 謖�ョ壹@縺ェ縺九▲縺溷�縺ッ繝�ヵ繧ゥ繝ォ繝亥€、縺ォ縺ェ縺」縺ヲ縺�k縺薙→縺檎「コ隱阪〒縺阪k縲�
    

繧キ繝シ繧ア繝ウ繧ケ竭�

繧キ繝シ繧ア繝ウ繧ケ縺ィ縺ッ逡ェ蜿キ繧堤ョ。逅�@縺ヲ逋コ陦後☆繧九が繝悶ず繧ァ繧ッ繝医〒縺ゅk縲�

CREATE SEQUENCE 繧キ繝シ繧ア繝ウ繧ケ蜷�;

繧キ繝シ繧ア繝ウ繧ケ縺ッCURRVAL繧НEXTVAL縺ェ縺ゥ縺ョ髢「謨ー縺ァ菴ソ逕ィ縺吶k縲�
CURRVAL縺ッ迴セ蝨ィ縺ョ蛟、繧貞叙蠕励☆繧九€�
縺溘□縺励€√◎縺ョ繧サ繝�す繝ァ繝ウ縺ァNEXTVAL繧貞ョ溯。後@縺ヲ縺�↑縺��エ蜷医€,URRVAL縺ッ繧ィ繝ゥ繝シ縺ィ縺ェ繧九€�
NEXTVAL縺ッ谺。縺ョ蛟、繧貞叙蠕励☆繧九€�
縺ェ縺翫€√%縺薙°繧峨�\t縺ァ陦ィ遉コ蠖「蠑上r螟画峩縺励※縺翫¥縲�

oddtbs=> \t
Showing only tuples.
oddtbs=> create sequence seq;
CREATE SEQUENCE
oddtbs=> select currval('seq');
ERROR:  currval of sequence "seq" is not yet defined in this session
窶サ NEXTVAL繧貞ョ溯。後@縺ヲ縺�↑縺��縺ァ繧ィ繝ゥ繝シ縲�
oddtbs=> select nextval('seq');
       1
oddtbs=> select currval('seq');
       1
oddtbs=> select nextval('seq');
       2
oddtbs=> select currval('seq');
       2

繧キ繝シ繧ア繝ウ繧ケ竭。

隍�尅縺ェ繧キ繝シ繧ア繝ウ繧ケ繧貞ョ夂セゥ縺吶k縺薙→繧ゅ〒縺阪k縲�

CREATE SEQUENCE 繧キ繝シ繧ア繝ウ繧ケ蜷� START 蛻晄悄蛟、 INCREMENT 蠅怜� MINVALUE 譛€蟆丞€、 MAXVALUE 譛€螟ァ蛟、 [CYCLE];

CYCLE謖�ョ壹☆繧九→縲∵怙螟ァ蛟、縺セ縺溘�譛€蟆丞€、繧偵�縺ソ蜃コ縺吝�エ蜷医↓縲∵怙蟆丞€、縺セ縺溘�譛€螟ァ蛟、縺ォ縺ェ繧翫€∝€、縺悟セェ迺ー縺吶k縲�
謖�ョ壹&繧後↑縺代l縺ー縲√�縺ソ蜃コ縺吶→縺阪↓繧ィ繝ゥ繝シ縺ィ縺ェ繧九€�

oddtbs=> drop sequence seq;
DROP SEQUENCE
oddtbs=> create sequence seq start 2000 increment 10 minvalue 1000 maxvalue 2050 cycle;
CREATE SEQUENCE
oddtbs=> select nextval('seq');
    2000
oddtbs=> select nextval('seq');
    2010
oddtbs=> select nextval('seq');
    2020
oddtbs=> select nextval('seq');
    2030
oddtbs=> select nextval('seq');
    2040
oddtbs=> select nextval('seq');
    2050
oddtbs=> select nextval('seq');
    1000
窶サ 譛€螟ァ蛟、繧定カ�∴縺ヲ縺励∪縺��縺ァ譛€蟆丞€、縺ォ縺ェ縺」縺溘€�
oddtbs=> select nextval('seq');
    1010
oddtbs=> select nextval('seq');
    1020

繧キ繝シ繧ア繝ウ繧ケ繧偵ョ繝輔か繝ォ繝亥€、縺ァ菴ソ逕ィ縺吶k

遉セ蜩。繝��繝悶Ν縺ョ遉セ蜩。逡ェ蜿キ縺ェ縺ゥ縺ッ縲∝ョ滄圀縺ォ莠コ髢薙′謇句虚縺ァ蛟、繧呈アコ繧√k縺ョ縺碁屮縺励>蝣エ蜷医b縺ゅk縲�
縺昴�蝣エ蜷医€√す繝シ繧ア繝ウ繧ケ繧偵ョ繝輔か繝ォ繝亥€、縺ィ邨�∩蜷医o縺帙k縺薙→縺ァ隗」豎コ縺ァ縺阪k縲�
縺ェ縺翫€√%縺薙°繧芽。ィ遉コ蠖「蠑上�蜈�↓謌サ縺吶€�

  1. 谺。縺ョ�ウ�ア�ャ繧偵ヵ繧。繧、繝ォ縺ィ縺励※菴懈�縲ゑシ�default042.sql��

    
    
  2. oddtbs=> \t
    Tuples only is off.
    oddtbs=> \i default042.sql
    ...
    oddtbs=> insert into emp (name, gender, age) values('驤エ譛ィ鄒ゥ逕キ', 1, 58);
    INSERT 0 1
    oddtbs=> insert into emp (name, gender, age) values('譁手陸豢句ュ�', 2, 30);
    INSERT 0 1
    oddtbs=> select * from emp;
      code  |   name   | gender | age |  hiredate
    --------+----------+--------+-----+------------
     564001 | 驤エ譛ィ鄒ゥ逕キ |      1 |  58 | 2009-08-12
     564002 | 譁手陸豢句ュ� |      2 |  30 | 2009-08-12
    (2 rows)
    
    窶サ code蛻励′閾ェ蜍慕噪縺ォ蜑イ繧頑険繧峨l縺ヲ縺�k縲�
    

SERIAL蝙�

SERIAL縺ィ縺�≧迚ケ谿翫↑蝙九r菴ソ逕ィ縺吶k縺ィ縲∬�蜍慕噪縺ォ荳願ィ倥�繧医≧縺ェ繧キ繝シ繧ア繝ウ繧ケ菴懈�縺ィ繝�ヵ繧ゥ繝ォ繝亥€、險ュ螳壹r陦後≧縲�
縺溘□縺励€√す繝シ繧ア繝ウ繧ケ縺ョ諤ァ雉ェ縺ォ髢「縺吶k邏ー縺九>謖�ョ壹�縺ァ縺阪★縲�シ代°繧蛾幕蟋九@縺ヲ�代▽縺・縺、蠅励∴繧九€�

  1. 谺。縺ョ�ウ�ア�ャ繧偵ヵ繧。繧、繝ォ縺ィ縺励※菴懈�縲ゑシ�serial041.sql��

    
    
  2. 繝ュ繧ー繧、繝ウ逕サ髱「縺九i螳溯。後€�

    oddtbs=> \i serial041.sql
    ...
    oddtbs=> insert into emp (name, gender, age) values('驤エ譛ィ鄒ゥ逕キ', 1, 58);
    INSERT 0 1
    oddtbs=> insert into emp (name, gender, age) values('譁手陸豢句ュ�', 2, 30);
    INSERT 0 1
    oddtbs=> select * from emp;
     code |   name   | gender | age |  hiredate
    ------+----------+--------+-----+------------
        1 | 驤エ譛ィ鄒ゥ逕キ |      1 |  58 | 2009-08-12
        2 | 譁手陸豢句ュ� |      2 |  30 | 2009-08-12
    (2 rows)
    
    窶サ code蛻励′閾ェ蜍慕噪縺ォ1縺九i蜑イ繧頑険繧峨l縺ヲ縺�k縲�