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 ]
    [ OWNED BY { 
table
.
column
 | NONE } ]

¼³¸í

CREATE SEQUENCE´Â »õ·Î¿î ½ÃÄö½º¹øÈ£ »ý¼º±â¸¦ »ý¼ºÇÕ´Ï´Ù. À̰ÍÀº name À̸§À¸·Î µÈ, »õ·Î¿î Ưº°ÇÑ ´ÜÀÏ Çà Å×À̺íÀ» »ý¼ºÇϰí ÃʱâÈ­ÇÏ´Â °ÍÀ» Æ÷ÇÔÇÕ´Ï´Ù. »ý¼º±â´Â ÀÌ Ä¿¸àµå¸¦ ¹ßÇàÇÏ´Â »ç¿ëÀÚ°¡ ¼ÒÀ¯ÇÕ´Ï´Ù.

½ºÅ°¸¶¸íÀÌ Á¦½ÃµÈ °æ¿ì, ½ÃÄö½º´Â ÁöÁ¤µÈ ½ºÅ°¸¶¿¡¼­ »ý¼ºµË´Ï´Ù. ½ºÅ°¸¶¸íÀÌ Á¦½ÃµÇÁö ¾ÊÀº °æ¿ì, ½ÃÄö½º´Â ÇöÀçÀÇ ½ºÅ°¸¶¿¡¼­ »ý¼ºµË´Ï´Ù. Àӽà ½ÃÄö½º´Â Ưº°ÇÑ ½ºÅ°¸¶¿¡¼­ Á¸ÀçÇϹǷÎ, Àӽà ½ÃÄö½º°¡ »ý¼ºµÉ ½Ã¿¡ ½ºÅ°¸¶¸íÀÌ Á¦½ÃµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ½ÃÄö½º¸íÀº ´Ù¸¥ ½ÃÄö½º, Å×À̺í, À妽ºÀÇ À̸§ ¶Ç´Â µ¿ÀÏ ½ºÅ°¸¶ ³»ÀÇ ºä À̸§°ú ´Þ¶ó¾ß ÇÕ´Ï´Ù.

½ÃÄö½º°¡ »ý¼ºµÈ ÈÄ, ½ÃÄö½º ¿¬»êÀ» À§ÇØ nextval, currval, ¹× setvalÇÔ¼ö¸¦ »ç¿ëÇϼ¼¿ä. À̵é ÇÔ¼ö´Â Section 9.12¿¡ ¹®¼­È­µÇ¾î ÀÖ½À´Ï´Ù.

½ÃÄö½º¸¦ Á÷Á¢ °»½ÅÇÒ ¼ö´Â ¾ø¾îµµ, Äõ¸®¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

SELECT * FROM 
name
;

½ÃÄö½ºÀÇ ÇöÀç »óÅÂ¿Í ¸Å°³º¯¼ö¸¦ °ËÁõ ÇÏ·Á¸é, ´ÙÀ½°ú °°ÀÌ ÇÕ´Ï´Ù. ƯÈ÷ ½ÃÄö½ºÀÇ last_valueºÎºÐÀº ¼¼¼Ç¿¡ ÀÇÇØ ÇÒ´çµÈ ¸¶Áö¸· °ªÀ» º¸¿©ÁÝ´Ï´Ù. (¹°·Ð, ´Ù¸¥ ¼¼¼ÇÀÌ nextvalÈ£ÃâÀ» ½ÃÇàÇϰí ÀÖ´Â °æ¿ì, Ãâ·ÂµÉ Âë¿¡ ÀÌ °ªÀº ¹«¿ëÁö¹°ÀÌ µÉ ¼ö ÀÖ½À´Ï´Ù.)

¸Å°³º¯¼ö

TEMPORARY or TEMP

ÁöÁ¤µÈ °æ¿ì, ½ÃÄö½º °´Ã¼´Â ÀÌ ¼¼¼ÇÀ» À§ÇØ »ý¼ºµÇ°í, ÀÚµ¿ÀûÀ¸·Î ¼¼¼Ç Á¾·á»ó¿¡¼­ »èÁ¦µË´Ï´Ù. °ËÁõÀ» °ÅÄ£ ½ºÅ°¸¶¸íÀ» ÂüÁ¶ÇÏÁö ¾Ê´Â ÇÑ, Àӽà ½ÃÄö½º°¡ Á¸ÀçÇÏ´Â µ¿¾È¿¡ µ¿ÀÏÇÑ À̸§À» °¡Áø, ±âÁ¸ÀÇ Ç×±¸ÀûÀÎ ½ÃÄö½º´Â °¡½ÃÈ­µÇÁö ¾Ê½À´Ï´Ù.(ÀÌ ¼¼¼Ç¿¡¼­)

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(Çѹø¿¡ 1°³ÀÇ °ª¸¸ÀÌ »ý¼ºµË´Ï´Ù, Áï, no cache)À̰í ÀÌ°Í ¶ÇÇÑ µðÆúÆ® ÀÔ´Ï´Ù.

CYCLE
NO CYCLE

CYCLE¿É¼ÇÀº, maxvalue ¶Ç´Â minvalue ½ÃÄö½º°¡ °¢°¢ ¿À¸§Â÷¼ø ¶Ç´Â ³»¸²Â÷¼ø ½ÃÄö½º·Î µµ´ÞÇÒ ½Ã, ·¦¾î¶ó¿îµåÇÏ´Â °ÍÀ» Çã¿ëÇÕ´Ï´Ù. ÃÖ¼ÒÄ¡ ¶Ç´Â ÃÖ´ëÄ¡¿¡ µµ´ÞÇÏ´Â °æ¿ì, »ý¼ºµÈ ´ÙÀ½ ¼ýÀÚ´Â °¢°¢ minvalue ¶Ç´Â maxvalue °¡ µË´Ï´Ù.

NO CYCLEÀÌ ÁöÁ¤µÈ °æ¿ì, ½ÃÄö½º°¡ ÃÖ´ë°ª¿¡ µµ´ÞÇÑ ÈÄ¿¡, ¸ðµç nextvalÈ£ÃâÀº ¿¡·¯¸¦ ¹ÝȯÇÕ´Ï´Ù. CYCLE ¶Ç´Â NO CYCLE µÑ ´Ù ÁöÁ¤µÇÁö ¾ÊÀº °æ¿ì, NO CYCLE°¡ µðÆúÆ®°¡ µË´Ï´Ù.

OWNED BY table . column
OWNED BY NONE

OWNED BY¿É¼ÇÀº ƯÁ¤ÇÑ Å×À̺íÀÇ ¿­°ú ¿¬°üµÈ ½ÃÄö½º¸¦ »ý¼ºÇÕ´Ï´Ù. ±×·¯ÇÑ ¿­(¶Ç´Â ¿­ÀÇ Å×À̺í)ÀÌ »èÁ¦µÇ´Â °æ¿ì, ½ÃÄö½º ¶ÇÇÑ ÀÚµ¿ÀûÀ¸·Î »èÁ¦µË´Ï´Ù. ÁöÁ¤µÈ Å×À̺íÀº, ½ÃÄö½ºÃ³·³ °°Àº ½ºÅ°¸¶ ³»¿¡ ÀÖ¾î¾ß Çϸç, °°Àº ¼ÒÀ¯ÀÚ°¡ ¼ÒÀ¯ÇØ¾ß ÇÕ´Ï´Ù. µðÆúÆ® OWNED BY NONE´Â À̿Ͱ°Àº ¿¬°ü¼ºÀÌ ¾øÀ½À» ÁöÁ¤ÇÕ´Ï´Ù.

ÁÖ¼®

½ÃÄö½º¸¦ »èÁ¦Çϱâ À§ÇØ DROP SEQUENCE¸¦ »ç¿ëÇÕ´Ï´Ù.

bigint°è»ê¿¡ ±âÃÊÇÑ ½ÃÄö½ºÀÔ´Ï´Ù. µû¶ó¼­ ¹üÀ§´Â, 8¹ÙÀÌÆ® Á¤¼öÀÇ ¹üÀ§ (-9223372036854775808 to 9223372036854775807)¸¦ ÃʰúÇÒ ¼ö ¾ø½À´Ï´Ù. ¿À·¡µÈ Ç÷§Æû»ó¿¡¼­, 8¹ÙÀÌÆ® Á¤¼öÀÇ ÄÄÆÄÀÏ·¯´Â Áö¿øµÇÁö ¾ÊÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, ½ÃÄö½º´Â Åë»ó integer°è»êÀ» »ç¿ëÇÕ´Ï´Ù. (¹üÀ§´Â -2147483648 ¿¡¼­ +2147483647 )

1º¸´Ù Å« cache ¼³Á¤ÀÌ, 2°³ÀÌ»óÀÇ ¼¼¼Ç¿¡ µ¿½Ã¿¡ »ç¿ëµÇ´Â ½ÃÄö½º °´Ã¼¿¡»ç¿ëµÇ´Â °æ¿ì, ¿¹±âÄ¡ ¾ÊÀº °á°ú¸¦ ¾òÀ» ¼ö ÀÖ½À´Ï´Ù. °¢°¢ÀÇ ¼¼¼ÇÀº, ÇÑ ¼¼¼ÇÀÌ ½ÃÄö½º °´Ã¼¿¡ Á¢±ÙÇϰí, ½ÃÄö½º °´Ã¼ÀÇ last_value¸¦ ÀûÀýÈ÷ Áõ°¡½ÃŰ´Â µ¿¾È, ¿¬¼ÓÀûÀÎ ½ÃÄö½º °ªÀ» ÇÒ´çÇϰí ij½¬ÇÕ´Ï´Ù. ¼¼¼Ç ³» nextvalÀÇ cache -1´ÙÀ½ÀÇ »ç¿ëÀº, ½ÃÄö½º °´Ã¼¸¦ »ç¿ëÇÏÁö ¾Ê°í, »çÀüÇÒ´çµÈ °ªÀ» ¹ÝȯÇÕ´Ï´Ù. µû¶ó¼­, ½ÃÄö½º¿¡ "holes"ÀÇ °á°ú¸¦ °¡Á®¿À´Â ¼¼¼ÇÀÌ Á¾·áµÉ ½Ã, ¼¼¼Ç ³»¿¡¼­ »ç¿ëµÇÁö ¾ÊÀº ÇÒ´çµÈ ¸ðµç ¹øÈ£¸¦ ÀÒ°Ô µË´Ï´Ù.

´õ¿íÀÌ, °¢°¢ ´Ù¸¥ ½ÃÄö½º °ªÀ» ÇÒ´çÇϱâ À§ÇØ 2°³ ÀÌ»óÀÇ ¼¼¼ÇÀÌ º¸ÀåµÉ Áö¶óµµ, ¸ðµç ¼¼¼ÇÀÌ °í·ÁµÉ ½Ã, be generated out of°ªÀº »ý¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ¿¹¸¦µé¸é, 10ÀÇ cache ÀÌ ¼³Á¤µÈ ¼¼¼ÇA´Â 1ºÎÅÍ 10±îÁöÀÇ °ªÀ» ÁöÁ¤Çϰí, nextval=1¸¦ ¹ÝȯÇÕ´Ï´Ù. ¼¼¼ÇB´Â 11ºÎÅÍ 20±îÁöÀÇ °ªÀ» ÁöÁ¤Çϰí, ¼¼¼ÇA°¡ nextval=2¸¦ »ý¼ºÇϱâ Àü¿¡ nextval=11¸¦ ¹ÝȯÇÕ´Ï´Ù. ±×·¯¹Ç·Î, 1ÀÇ cache ¼³Á¤Àº nextval°ªÀÌ ¼øÂ÷ÀûÀ¸·Î »ý¼ºÇÑ´Ù´Â °ÍÀ» ÃßÃøÇÕ´Ï´Ù. 1º¸´Ù Å« cache ·Î nextval°ªÀÌ ¸ðµÎ ´Ù¸£°í, ¼øÂ÷ÀûÀ¸·Î »ý¼ºµÇÁö ¾Ê´Â´Ù´Â °ÍÀ» ÃßÃøÇØ¾ß ÇÕ´Ï´Ù. ¶ÇÇÑ, last_value´Â nextvalÀÌ °ªÀ» ¹ÝȯÇß´ÂÁö ¹ÝȯÇÏÁö ¾Ê¾Ò´ÂÁö, ¾Æ¹« ¼¼¼ÇÀÌ ÁöÁ¤ÇÑ ÃÖ±ÙÀÇ °ªÀ» ¹Ý¿µÇÕ´Ï´Ù.

¶Ç ´Ù¸¥ °í·Á»çÇ×Àº, ÀÌ·¯ÇÑ ½ÃÄö½º¿¡¼­ ½ÇÇàµÈ setval°¡, ij½¬Çß´ø ¸ðµç »çÀüÇÒ´ç °ªÀÌ ¼Ò¸ðµÉ ¶§±îÁö ´Ù¸¥ ¼¼¼Ç¿¡ ÀÇÇØ ÁÖÀǵÇÁö ¾Ê´Â´Ù´Â °ÍÀÔ´Ï´Ù.

¿¹

101¿¡¼­ ½ÃÀÛÇÏ¿©, serial¶ó´Â ½ÃÄö½ºÀÇ ¿À¸§Â÷¼ø ½ÃÄö½º¸¦ »ý¼ºÇÕ´Ï´Ù.

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Ç¥ÁØ¿¡ »óÀÀÇÕ´Ï´Ù.

°ü·Ã Ç׸ñ

ALTER SEQUENCE , DROP SEQUENCE