๐Ÿžํ”„๋กœ๊ทธ๋ž˜๋ฐ

[์ •๋ณด] SQL ๋ฐ์ดํ„ฐ ํ‚ค ๊ฐ’ ๋นˆ ๊ณต๋ฐฑ ์ฑ„์šฐ๊ธฐ

TwoIceFish 2023. 3. 15. 14:58

๋งŒ์•ฝ ๋นˆ ์ž๋ฆฌ๋ฅผ ํ•œ ์นธ์”ฉ ๋‹น๊ธฐ๋Š” ๊ณผ์ •์—์„œ ๋˜ ๋‹ค๋ฅธ ๋นˆ ์ž๋ฆฌ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค๋ฉด, ์ด๋ฅผ ์ฒ˜๋ฆฌํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฐ˜๋ณต์ ์œผ๋กœ ๋นˆ ์ž๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋นˆ ์ž๋ฆฌ๋ฅผ ์ฑ„์›Œ์ฃผ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๋‹ค์Œ์€ ๋นˆ ์ž๋ฆฌ๋ฅผ ๊ฒ€์‚ฌํ•˜๊ณ  ํ•„์š”ํ•œ ๊ฒฝ์šฐ ๋นˆ ์ž๋ฆฌ๋ฅผ ์ฑ„์›Œ์ฃผ๋Š” ์˜ˆ์‹œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค.

SET @current_no = 0;
UPDATE ํ…Œ์ด๋ธ”์ด๋ฆ„ SET no = (@current_no := @current_no + 1) WHERE no IS NOT NULL ORDER BY no ASC;

1๋ถ€ํ„ฐ 32๊นŒ์ง€ ์ค‘๊ฐ„์— ๊ณต๋ฐฑ์—†์ด ๋งž์ถฐ์ง„ id ๊ฐ’



์œ„ ์ฝ”๋“œ๋Š” ๋จผ์ € ๋ณ€์ˆ˜ @current_no๋ฅผ 0๋กœ ์ดˆ๊ธฐํ™”ํ•œ ํ›„, no ๊ฐ’์ด NULL์ด ์•„๋‹Œ ๋ชจ๋“  ํ–‰์„ ๋ฒˆํ˜ธ ์ˆœ์„œ๋Œ€๋กœ ์—…๋ฐ์ดํŠธ ํ•ฉ๋‹ˆ๋‹ค. ์ด๋•Œ, ์—…๋ฐ์ดํŠธํ•  ๋•Œ๋งˆ๋‹ค @current_no ๋ณ€์ˆ˜๋ฅผ 1์”ฉ ์ฆ๊ฐ€์‹œ์ผœ์„œ ๋ฒˆํ˜ธ๋ฅผ ๋ถ€์—ฌํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ํ•˜๋ฉด ๋นˆ ์ž๋ฆฌ๊ฐ€ ์žˆ๋”๋ผ๋„ ๋ฒˆํ˜ธ๋ฅผ ์ˆœ์„œ๋Œ€๋กœ ์ฑ„์›Œ ๋„ฃ์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์ฃผ์˜์‚ฌํ•ญ์œผ๋กœ๋Š” ์ž๋™์ฆ๊ฐ€ ์ „๋žต์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์„ ๋•Œ AUTO_INCREMENT ๊ฐ’์„ ์กฐ์ •ํ•ด์ฃผ์–ด์•ผํ•ฉ๋‹ˆ๋‹ค. ์กฐ์ •ํ•ด ์ฃผ์ง€ ์•Š์œผ๋ฉด ๋‹ค์Œ์— ๋“ค์–ด์˜ค๋Š” ๊ฐ’์€ ์กฐ์ • ์ „ ๋งˆ์ง€๋ง‰ ๊ฐ’์„ ๊ธฐ์ค€์œผ๋กœ id ๊ฐ’์ด ์ฆ๊ฐ€ํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ALTER TABLE article_entity AUTO_INCREMENT = 95;