• ์‹œํ€€์Šค?

    • ์œ ์ผํ•œ(Unique)ํ•œ ํ‚ค ๊ฐ’์„ ์ƒ์„ฑํ•ด์ฃผ๋Š” ์˜ค๋ผํด ๊ฐ์ฒด

    • ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ๊ธฐ๋ณธํ‚ค์™€ ๊ฐ™์ด ์ˆœ์ฐจ์ ์œผ๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ์ปฌ๋Ÿผ์„ ์ž๋™์ ์œผ๋กœ ์ƒ์„ฑ ๊ฐ€๋Šฅํ•˜๋‹ค.

    • ๋ณดํ†ต PK ๊ฐ’์„ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•œ๋‹ค.

    • ๋ฉ”๋ชจ๋ฆฌ์— cache ๋˜์—ˆ์„ ๋•Œ ์‹œํ€€์Šค ๊ฐ’์˜ ์•ก์„ธ์Šค ํšจ์œจ์ด ์ฆ๊ฐ€ํ•œ๋‹ค.

    • ์‹œํ€€์Šค๋Š” ํ…Œ์ด๋ธ”๊ณผ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์ €์žฅ๋˜๊ณ  ์‚ฌ์šฉ๋œ๋‹ค.

์‹œํ€€์Šค์˜ ์ƒ์„ฑ ๋ฐ ์‚ญ์ œ
1
2
3
4
5
6
7
8
9
10
11
12
13
SQL> CREATE SEQUENCE sequence_name
  2    START WITH 1
  3    INCREMENT BY 1
  4    MAXVALUE 100
  5  ;
 
Sequence created.
 
--------------------------------------
 
SQL> DROP SEQUENCE sequence_name;
 
Sequence dropped.
cs
  • START WITN (n) 
    • n ์„ ์ดˆ๊ธฐํ™” ๊ฐ’์œผ๋กœ ์‹œ์ž‘
  • INCREMENT BY (n)
    • n ์„ ์ฆ๊ฐ€ํ•˜๋Š” ๊ฐ’์œผ๋กœ ์‹œ์ž‘
  • MAXVALUE (n)
    • n ์„ ์‹œํ€€์Šค๊ฐ€ ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ์ตœ๋Œ€ ๊ฐ’์œผ๋กœ ์„ค์ •
๊ทธ ๋ฐ–์— ์ž์„ธํ•œ ๋‚ด์šฉ์€ ์—ฌ๊ธฐ์—์„œ ํ™•์ธ


์‹œํ€€์Šค ์‚ฌ์šฉ ์˜ˆ

(1) 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ 1์”ฉ ์ฆ๊ฐ€ํ•ด ์ตœ๋Œ€ 100๊นŒ์ง€ ์ฆ๊ฐ€ํ•˜๋Š” ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑ (์œ„์˜ ๋‚ด์šฉ)

(2) ์ดํ›„ ์‹œํ€€์Šค๊ฐ€ ์ •์ƒ์ ์œผ๋กœ ์ƒ์„ฑ๋˜๊ณ  ์žˆ๋Š”์ง€ ์กฐํšŒ

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
SQL> SELECT sequence_name.NEXTVAL FROM DUAL;
 
   NEXTVAL
----------
         1
 
SQL> SELECT sequence_name.NEXTVAL FROM DUAL;
 
   NEXTVAL
----------
         2
 
SQL> SELECT sequence_name.NEXTVAL FROM DUAL;
 
   NEXTVAL
----------
         3
 
SQL> SELECT sequence_name.NEXTVAL FROM DUAL;
 
   NEXTVAL
----------
         4
cs


์œ„์˜ ๋‚ด์šฉ์„ ๋ณด๋ฉด ์กฐํšŒ๋Š” ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋˜๊ณ  ์žˆ๋Š” ๊ฒƒ์„ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค. 


์‹œํ€€์Šค๋ฅผ ์ด์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฅผ ๋“ฑ๋กํ•˜๊ธฐ

(1) ๊ฒŒ์‹œํŒ ํ…Œ์ด๋ธ” ์ƒ์„ฑ

1
2
3
4
5
6
7
8
CREATE TABLE WEB_BOARD_TB(
  CONTENT_NUM NUMBER(7PRIMARY KEY,
  CONTENT_DATE Date DEFAULT SYSDATE,
  CONTENT_TITLE varchar2(100),
  CONTENT_WRITER varchar2(100),
  CONTENT_DETAIL varchar2(300),
  CONTENT_HIT NUMBER(4DEFAULT 0
);
cs


(2) ์‹œํ€€์Šค ์ด์šฉ ๋ฐ์ดํ„ฐ ์‚ฝ์ž…

1
2
3
4
INSERT INTO WEB_BOARD_TB 
  (CONTENT_NUM, CONTENT_TITLE, CONTENT_WRITER, CONTENT_DETAIL)
VALUES 
  (CONTENT_SEQ.NEXTVAL, '๊ฒŒ์‹œ๊ธ€ ์ œ๋ชฉ''๊ฒŒ์‹œ๊ธ€ ์ž‘์„ฑ์ž''๊ฒŒ์‹œ๊ธ€ ๋‚ด์šฉ');
cs


(3) (2)์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์—ฌ๋Ÿฌ๊ฐœ ์‚ฝ์ž… ํ›„ ์กฐํšŒ

๊ตณ์ด ๋”ฐ๋กœ ๋ณด์—ฌ์ฃผ์ง€ ์•Š๋”๋ผ๋„ ๋˜์–ด์žˆ๋Š”๊ฑธ ํ™•์ธ ๊ฐ€๋Šฅํ•˜๋‹ค.


ํ˜„์žฌ ์ƒ์„ฑ๋œ ๋ชจ๋“  ์‹œํ€€์Šค ํ™•์ธ

1
2
3
4
5
SQL> SELECT * FROM user_sequences;
 
SEQUENCE_NAME    MIN_VALUE  MAX_VALUE INCREMENT_BY CY OR CACHE_SIZE LAST_NUMBER
--------------- ---------- ---------- ------------ -- -- ---------- -----------
CONTENT_SEQ              1     100000            1 N  N          20          41
cs


.NEXTVAL & .CURRVAL 

๊ทธ ๋‹ค์Œ ์‹œํ€€์Šค๋ฅผ ์ถœ๋ ฅ, ํ˜„์žฌ ์„ธ์…˜์ด ๊ฐ€์ง€๊ณ ์žˆ๋Š” ์ตœ์ข… ์‹œํ€€์Šค ์ถœ๋ ฅํ•œ๋‹ค. ๋งŒ์•ฝ ํ•œ๋ฒˆ๋„ NEXTVAL ์„ ์š”๊ตฌํ•œ ์  ์—†๋‹ค๋ฉด ์—๋Ÿฌ๊ฐ€ ๋‚˜ํƒ€๋‚˜๋ฉฐ ํ˜„์žฌ ์„ธ์…˜์ด ๋ณด์œ ํ•˜๊ณ  ์žˆ๋Š” CURRVAL ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
SQL> SELECT CONTENT_SEQ.NEXTVAL FROM dual;
 
   NEXTVAL
----------
        26
 
SQL> SELECT CONTENT_SEQ.NEXTVAL FROM dual;
 
   NEXTVAL
----------
        27
 
SQL> SELECT CONTENT_SEQ.CURRVAL FROM dual;
 
   CURRVAL
----------
        27
cs


Posted by doubler
,