๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก/๐Ÿ˜ SQL

SQL/PostgreSQL | Sequence

  • -

Sequence ์‚ฌ์šฉ ๋ฐฉ๋ฒ•

ํ…Œ์ŠคํŠธ ํ•˜๋‹ค๋ณด๋ฉด seq ๊ฐ€ ์ง€์†์ ์œผ๋กœ ๋Š˜์–ด๋‚˜๊ฑฐ๋‚˜ ์ค‘๋ณต๊ฐ’์„ ํ”ผํ•˜๊ธฐ ์œ„ํ•ด ์ž„์˜ ๊ธฐ์ค€๋ถ€ํ„ฐ seq ๋ฅผ ์ถ”๊ฐ€ํ•˜๋Š” ๊ฒฝ์šฐ๊ฐ€ ์žˆ๋‹ค.

ํ…Œ์ŠคํŠธ๊ฐ€ ๋๋‚˜๊ฒŒ ๋˜๋ฉด ์ƒ์„ฑ์‹œ 1 ์ด๋ผ๋Š” ๊ฐ’์œผ๋กœ ๋Œ๋ฆฌ๊ธฐ ์œ„ํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ Sequence ๊ตฌ๋ฌธ์„ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

 

๊ตฌ๋ฌธ

  • create : CREATE SEQUENCE seq_name
  • nextval : nextval('seq_name')
  • currval : currval('seq_name')
  • setval : setval('seq_name', seq_val, [true/false])
  • drop : DROP SEQUENCE seq_name

 

์‹œํ€€์Šค ์ƒ์„ฑ, ์‚ญ์ œ

CREATE SEQUENCE mine_seq;
DROP SEQUENCE mine_seq;

 

์‹œํ€€์Šค ํ˜„์žฌ๊ฐ’, ๋‹ค์Œ๊ฐ’

SELECT currval('mine_seq');
SELECT nextval('mine_seq');

currval() ์‚ฌ์šฉ์‹œ ์—๋Ÿฌ ๋ฐœ์ƒ ๊ฒฝ์šฐ

ERROR: ์˜ค๋ฅ˜: "mine_seq" ์‹œํ€€์Šค์˜ currval ๊ฐ’์ด ํ˜„์žฌ ์„ธ์…˜์— ์ง€์ •๋˜์–ด ์žˆ์ง€ ์•Š์Šต๋‹ˆ๋‹ค
SQL state: 55000

์ด์ „์œผ๋กœ ๋Œ์•„๊ฐˆ ๊ฐ’์„ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ๊ฒฝ์šฐ์ž„์œผ๋กœ nextval() ๋ฅผ ํ•œ ๋ฒˆ ์‹คํ–‰ํ•œ ๋’ค์— ๋‹ค์‹œ ์‹คํ–‰ํ•˜๋ฉด ๋œ๋‹ค.

 

์‹œํ€€์Šค ์ดˆ๊ธฐํ™”

SELECT setval('mine_seq', 1, true); -- nextval('mine_seq') = 2
SELECT setval('mine_seq', 1, false); -- nextval('mine_seq') = 1
  • true : ์ดˆ๊ธฐํ™” ํ›„ nextval๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์ดˆ๊ธฐํ™”๋œ ๊ฐ’(1)์—์„œ +1์„ ํ•˜์—ฌ ์‚ฌ์šฉ๋œ๋‹ค.
  • false : ์ดˆ๊ธฐํ™” ํ›„ nextval๋ฅผ ์‚ฌ์šฉํ• ๋•Œ ์ดˆ๊ธฐํ™”๋œ ๊ฐ’(1)์„ ๊ทธ๋Œ€๋กœ ์‚ฌ์šฉํ•œ๋‹ค.

 

 

์ถœ์ฒ˜ | https://mine-it-record.tistory.com/341

'๐Ÿ’ป ๊ณต๋ถ€ ๊ธฐ๋ก > ๐Ÿ˜ SQL' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SQL/Postgresql | Sub Query(์„œ๋ธŒ์ฟผ๋ฆฌ)  (0) 2023.05.12
SQL | CONCAT  (0) 2023.01.09
SQL | LPAD, RPAD  (0) 2023.01.09
SQL | ์กฐ๊ฑด ๋ฐ์ดํ„ฐ ๊ฒ€์ƒ‰  (0) 2023.01.03
SQL | ๊ฐœ๋…  (0) 2023.01.03
Contents

ํฌ์ŠคํŒ… ์ฃผ์†Œ๋ฅผ ๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค

์ด ๊ธ€์ด ๋„์›€์ด ๋˜์—ˆ๋‹ค๋ฉด ๊ณต๊ฐ ๋ถ€ํƒ๋“œ๋ฆฝ๋‹ˆ๋‹ค.