[MariaDB] Auto Increment ๋œ ID๊ฐ’ ๋ฐ˜ํ™˜ํ•˜๊ธฐ

2023. 8. 9. 18:13ยท๐Ÿ’ป ๊ฐœ๋ฐœ/๐Ÿ’พ Database

 

 

์ตœ๊ทผ ์ง„ํ–‰์ค‘์ธ ํ”„๋กœ์ ํŠธ์—์„œ ํŠธ๋Ÿฌ๋ธ” ์ŠˆํŒ…ํ–ˆ๋˜ ๊ฒฝํ—˜์„ ํ†ตํ•ด ์•Œ๊ฒŒ ๋œ ์ ์„ ์ ์–ด๋ณผ๊นŒ ํ•œ๋‹ค.

 

๊ฐœ๋ฐœํ–ˆ๋˜ ๋กœ์ง flow๋ฅผ ๊ฐ„๋‹จํ•˜๊ฒŒ ์„ค๋ช…ํ•˜์ž๋ฉด, ์—ฌ๋Ÿฌ ์‹œ์Šคํ…œ์— ์žˆ๋Š” ๊ณ ๊ฐ์„ ์ถ”์ถœํ•˜์—ฌ ์ค‘๋ณต ๊ณ ๊ฐ์„ ํ†ตํ•ฉํ•˜๊ณ  ์‹ ๊ทœ ์‹œ์Šคํ…œ์— ์ด๊ด€ํ•˜๋Š” ETL ์ž‘์—…์ด๋‹ค. ์ž‘์—… ํ™˜๊ฒฝ์€ ๊ณ ๊ฐ์‚ฌ์˜ DB ์„œ๋ฒ„๋ฅผ ์‚ฌ์šฉํ•˜๋Š”๋ฐ CentOS 7์— MariaDB๋ฅผ rpm์œผ๋กœ ์„ค์น˜ํ•˜์—ฌ 5.x ๋ฒ„์ „์œผ๋กœ ์„ค์น˜๊ฐ€ ๋˜์–ด ์žˆ์—ˆ๋‹ค.

 

๋ฌธ์ œ๋Š” ์‹ ๊ทœ ๊ณ ๊ฐ์„ Insert ํ•˜๋Š” ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ–ˆ๋Š”๋ฐ..

๊ทธ ์ „์— ์ž ๊น ์˜ˆ์ „์—๋„ ๋น„์Šทํ•œ ํ”„๋กœ์ ํŠธ๋ฅผ ํ•œ ์ ์ด ์žˆ์—ˆ๋Š”๋ฐ ๊ทธ ๋‹น์‹œ ๊ณ ๊ฐ์‚ฌ DB Server๋Š” Oracle์„ ์‚ฌ์šฉํ–ˆ์–ด์„œ, ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•˜์—ฌ nextval, currval๋กœ ID๋ฅผ return ๋ฐ›์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

 

๋‹น์—ฐํžˆ ์ด๋ฒˆ์—๋„ ์‹œํ€€์Šค๋ฅผ ์ƒ์„ฑํ•ด์„œ ID๋ฅผ ๋ฐ›์•„์•ผ์ง€ ํ–ˆ์ง€๋งŒ...

 

MariaDB ๊ณต์‹ Document (https://mariadb.com/kb/ko/sequence-overview/)

 

๊ทธ๋žฌ๋‹ค.. MariaDB๋Š” ์‹œํ€€์Šค๋ฅผ 10.3 ๋ฒ„์ „ ์ดํ›„์— ์ง€์›์„ ํ•˜์˜€๋‹ค.๐Ÿ˜‚

 

๊ทธ๋ž˜์„œ ๋ช‡๊ฐ€์ง€ ๋Œ€์ฑ…์„ ์„ธ์›Œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„๋ณด์•˜๋‹ค.

 

 

 

 

1. ๊ณ ๊ฐ์‚ฌ์— MariaDB ๋ฒ„์ „ ์ƒํ–ฅ ์š”์ฒญ โŒ

 

 ์šฐ์„  ์ตœ์‹  ๋ฒ„์ „์ด๋ผ๋ฉด, ์‹œํ€€์Šค ์ƒ์„ฑ์ด ๊ฐ€๋Šฅํ•˜๋‹ˆ ๊ฐ„๋‹จํ•˜๊ฒŒ ํ•ด๊ฒฐํ•  ๋ฌธ์ œ์˜€๋‹ค. 10.3 ๋ถ€ํ„ฐ ์‹œํ€€์Šค๋ฅผ ์ง€์›ํ•˜๋‹ˆ ๊ทธ ์ดํ›„ ๋ฒ„์ „ ์ค‘์— 10.6 LTS ๋ฒ„์ „์„ ์‚ฌ์šฉํ•˜๋ฉด ๋˜๊ฒ ๋‹ค ์‹ถ์–ด ์š”์ฒญ์„ ๋“œ๋ ธ๋‹ค. ํ•˜์ง€๋งŒ ์ž์„ธํ•œ ์ด์œ ๋Š” ๋ชจ๋ฅด์ง€๋งŒ (๊ณ ๊ฐ์‚ฌ๊ฐ€ ๊ณต๊ธฐ์—…์ด๋ผ ๊ทธ๋Ÿด์ง€๋„?) ์ •ํ•ด์ง„ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ์„ ๋ณ€๊ฒฝํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์‰ฝ์ง€ ์•Š์•˜๋‹ค. ๋ณ€๊ฒฝ์ด ๋˜๋”๋ผ๋„ ๊ทธ ์ ˆ์ฐจ๋Š” ๊ต‰์žฅํžˆ ์˜ค๋ž˜๊ฑธ๋ฆด ๊ฒƒ์„ ์ธ์ง€ํ•˜์—ฌ, ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์„ ์ฐพ์•„ ๋ณด์•˜๋‹ค.

 

 

2. select max(id) from user; โŒ

 

๋‹จ์ˆœํ•˜๊ฒŒ max๊ฐ’์„ ๊ฐ€์ ธ์˜ค๋ฉด ๋ ๊นŒ ํ–ˆ์ง€๋งŒ, ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์—์„œ๋„ ๊ณ ๊ฐ Insert๊ฐ€ ์ผ์–ด๋‚˜๊ธฐ ๋•Œ๋ฌธ์— ๋™์‹œ์„ฑ ๋ฌธ์ œ๋กœ ์‚ฌ์šฉํ•˜๊ธฐ์—” ์œ„ํ—˜ํ–ˆ๋‹ค.

 

 

3. ID ๋ฐœ๊ธ‰์— ๋Œ€ํ•ด ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋Š” Auto Increment๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ETL ๋กœ์ง์€ ๋†’์€ ๋ฒˆํ˜ธ(์˜ˆ๋ฅผ ๋“ค์–ด 1์–ต)๋ถ€ํ„ฐ ์‹œ์ž‘ ๐Ÿ”บ

 

์ด๋ฒˆ์—” ๊ฒฝ๋ ฅ์ด ๋งŽ์€ ํŒ€์›๋ถ„๊ป˜ ๋„์›€์„ ๊ตฌํ–ˆ๋”๋‹ˆ, ID๋ฅผ ๋”ฐ๋กœ ๊ด€๋ฆฌํ•˜๋Š”๊ฒŒ ์–ด๋–ป๊ฒ ๋ƒ๋Š” ํ”ผ๋“œ๋ฐฑ์„ ๋ฐ›์•˜๋‹ค. ๋‹ค๋ฅธ ๊ณณ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๊ณ ๊ฐ Insert๋Š” DB์˜ Auto Increment๋ฅผ ์ด์šฉํ•˜๊ณ , ETL์—์„œ๋Š” ๋ณ„๋„์˜ ์‹œํ€€์Šค๋ฅผ ๊ด€๋ฆฌํ•˜์—ฌ ๋†’์€ ๋ฒˆํ˜ธ๋ถ€ํ„ฐ ์ฐจ๋ก€๋Œ€๋กœ ๋ถ€์—ฌํ•˜๋ผ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค. 

์ข‹์€ ๋ฐฉ๋ฒ•์€ ์•„๋‹ ๊ฒƒ์ด๋ผ ํ•˜์…จ๊ณ  ๋‚˜ ๋˜ํ•œ ๊ทธ๋ ‡๊ฒŒ ์ƒ๊ฐ๋˜์—ˆ์ง€๋งŒ, ์šฐ์„  ๋Œ€์•ˆ์„ ์ฐพ์•„์•ผ ํ•˜๋‹ˆ ์‹œ๋„๋ฅผ ํ•ด๋ณด์•˜๋‹ค. ํ…Œ์ŠคํŠธ ๊ฒฐ๊ณผ Auto Increment๋Š” ์ œ์ผ ํฐ ๊ฐ’์„ ์ถ”์ ํ•˜์—ฌ +1์„ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— Auto Increment๊ฐ’๋ณด๋‹ค ๋” ํฐ ๊ฐ’์œผ๋กœ ๊ด€๋ฆฌ๋Š” ํž˜๋“ค์—ˆ๋‹ค. 

๊ทธ๋ž˜์„œ ๋ฐ˜๋Œ€๋กœ Auto Increment๋ฅผ ํฐ ๊ฐ’์œผ๋กœ ์„ค์ •ํ•˜๊ณ , ETL์—์„œ 1๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜๋Š” ์‹œํ€€์Šค๋ฅผ ๊ด€๋ฆฌํ•˜๋ฉด ๊ฐ€๋Šฅํ•˜๋‹จ ๊ฒƒ์„ ์•Œ๊ฒŒ ๋˜์—ˆ๋‹ค.

 

 

4. LAST_INSERT_ID() โœ…

 

๋” ๋งŒ์กฑ์Šค๋Ÿฌ์šด ๋ฐฉ๋ฒ•์„ ์ฐพ๊ธฐ ์œ„ํ•ด MariaDB ๋„ํ๋จผํŠธ ๋ฆฌ์ŠคํŠธ๋ฅผ ์‚ดํŽด ๋ณด๋˜ ์ค‘ LAST_INSERT_ID๋ผ๊ณ  ์จ์žˆ๋Š” ๊ฒƒ์„ ๋ณด๊ณ  ์ง๊ฐ์ ์œผ๋กœ '์•„ ์ด๊ฑฐ๋‹ค!' ์†์œผ๋กœ ์™ธ์ณค๋‹ค.

๋งํฌ : https://mariadb.com/kb/en/last_insert_id/

 

๋ฌธ์„œ์— ์žˆ๋Š” ๋ง์„ ์ธ์šฉํ•˜์—ฌ ๊ฐ„๋žตํ•˜๊ฒŒ ๋ฌด์—‡์ธ์ง€ ์„ค๋ช…ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™๋‹ค.

"๊ฐ€์žฅ ์ตœ๊ทผ์— ์‹คํ–‰๋œ INSERT ๋ฌธ์˜ ๊ฒฐ๊ณผ๋กœ AUTO_INCREMENT ์—ด์— ์„ฑ๊ณต์ ์œผ๋กœ ์‚ฝ์ž…๋œ ์ฒซ ๋ฒˆ์งธ ์ž๋™ ์ƒ์„ฑ ๊ฐ’์„ ๋ฐ˜ํ™˜"

 

 

 

๋‹ค๋งŒ ์ฃผ์˜ํ•  ์ ์€ ์˜ˆ์‹œ๋กœ ๋‚˜์™€์žˆ๋Š” ์ฟผ๋ฆฌ๋ฌธ์„ ์‚ดํŽด๋ณด๋ฉด,

INSERT INTO t(f) VALUES('a');

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+

INSERT INTO t(f) VALUES('b');

INSERT INTO t(f) VALUES('c');

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                3 |
+------------------+

INSERT INTO t(f) VALUES('d'),('e');

SELECT LAST_INSERT_ID();
+------------------+
| LAST_INSERT_ID() |
+------------------+
|                4 |
+------------------+

 

์œ„์ฒ˜๋Ÿผ ๋‹จ์ผ Insert๋ฌธ์„ ์‹คํ–‰ํ•˜๊ณ , ID๋ฅผ ๋ฐ›๊ฒŒ ๋˜๋ฉด ์ •์ƒ ์ˆ˜ํ–‰๋˜์ง€๋งŒ, ๋‹ค์ค‘ Insert๋ฌธ์„ ์‹คํ–‰ํ•˜๊ฒŒ ๋˜๋ฉด ๋‘๋ฒˆ์งธ ์ดํ›„์˜ Insert ๊ฒฐ๊ณผ๊ฐ€ ๋ฐ˜์˜๋˜์ง€ ์•Š๋Š”๋‹ค. ๋•Œ๋ฌธ์— ์ •ํ™•ํ•œ ๊ฐ’์„ ์ „๋‹ฌ๋ฐ›๊ธฐ ์œ„ํ•ด์„  ๋‹จ์ผ Insert ๋ฌธ์„ ํ™œ์šฉํ•ด์•ผ ํ•œ๋‹ค.

 

ํ•˜๋‚˜ ๋” ๊ฑฑ์ • ๋˜์—ˆ๋˜ ์ ์€, ์—ฌ๋Ÿฌ ํด๋ผ์ด์–ธํŠธ์—์„œ Insert๋ฅผ ์‹คํ–‰ํ•  ๋•Œ, ๊ณผ์—ฐ ์ •ํ™•ํ•œ ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ด์ฃผ๋ƒ๋Š” ๊ฒƒ์ด์—ˆ๋‹ค.

๋‹ต์€ ์•„๋ž˜ mysql ๊ณต์‹ ๋ฌธ์„œ์—์„œ ์ฐพ์„ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๋งํฌ : https://dev.mysql.com/doc/refman/8.0/en/information-functions.html#function_last-insert-id

 

๋˜ ๋‹ค์‹œ ๋ฌธ์„œ์— ๋‚˜์™€์žˆ๋Š” ๋ง์„ ๋ฒˆ์—ญํ•˜์—ฌ ์ธ์šฉํ•˜์ž๋ฉด,

 

์ƒ์„ฑ๋œ ID๋Š” ์—ฐ๊ฒฐ๋ณ„๋กœ ์„œ๋ฒ„์—์„œ ์œ ์ง€ ๊ด€๋ฆฌ๋ฉ๋‹ˆ๋‹ค. ์ด๊ฒƒ์€ ์ฃผ์–ด์ง„ ํด๋ผ์ด์–ธํŠธ์— ๋Œ€ํ•œ ํ•จ์ˆ˜์— ์˜ํ•ด ๋ฐ˜ํ™˜๋œ ๊ฐ’์ด ํ•ด๋‹น ํด๋ผ์ด์–ธํŠธ์— ์˜ํ•ด AUTO_INCREMENT ์—ด์— ์˜ํ–ฅ์„ ๋ฏธ์น˜๋Š” ๊ฐ€์žฅ ์ตœ๊ทผ ๋ช…๋ น๋ฌธ์— ๋Œ€ํ•ด ์ƒ์„ฑ๋œ ์ฒซ ๋ฒˆ์งธ AUTO_INCREMENT ๊ฐ’์ž„์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ฐ’์€ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๊ฐ€ ์ž์ฒด AUTO_INCREMENT ๊ฐ’์„ ์ƒ์„ฑํ•˜๋”๋ผ๋„ ์˜ํ–ฅ์„ ๋ฐ›์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด ๋™์ž‘์„ ํ†ตํ•ด ๊ฐ ํด๋ผ์ด์–ธํŠธ๋Š” ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ์˜ ํ™œ๋™์— ๋Œ€ํ•œ ๊ฑฑ์ • ์—†์ด ์ž ๊ธˆ์ด๋‚˜ ํŠธ๋žœ์žญ์…˜์ด ํ•„์š” ์—†์ด ์ž์‹ ์˜ ID๋ฅผ ๊ฒ€์ƒ‰ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์ฆ‰ ๋‹ค๋ฅธ ํด๋ผ์ด์–ธํŠธ๋ฅผ ๊ณ ๋ คํ•˜์ง€ ์•Š์•„๋„ ๋œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹ค๋งŒ Last_Insert_Id()๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„ , ๊ฐ™์€ DB Connection ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค๋Š” ์ ๋งŒ ๊ณ ๋ คํ•˜๋ฉด ๋˜์—ˆ๋‹ค.

 

์ €์ž‘์žํ‘œ์‹œ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'๐Ÿ’ป ๊ฐœ๋ฐœ > ๐Ÿ’พ Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

์ฝ˜์„œํŠธ ์˜ˆ์•ฝ ์„œ๋น„์Šค์˜ ์ธ๋ฑ์Šค ์„ค๊ณ„์™€ ์„ฑ๋Šฅ ๋น„๊ต  (0) 2024.11.14
Oracle ์„ธํŒ…, Eclipse Oracle ์—ฐ๋™ ๋ฐฉ๋ฒ•  (0) 2021.02.09
'๐Ÿ’ป ๊ฐœ๋ฐœ/๐Ÿ’พ Database' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
  • ์ฝ˜์„œํŠธ ์˜ˆ์•ฝ ์„œ๋น„์Šค์˜ ์ธ๋ฑ์Šค ์„ค๊ณ„์™€ ์„ฑ๋Šฅ ๋น„๊ต
  • Oracle ์„ธํŒ…, Eclipse Oracle ์—ฐ๋™ ๋ฐฉ๋ฒ•
EastShine_
EastShine_
๋” ๋‚˜์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋˜๊ธฐ ์œ„ํ•œ ๋‚˜์˜ ๊ธฐ๋ก ๐Ÿ“
  • EastShine_
    ๊ฐœ๋ฐœ.LOG ๐Ÿ’ป
    EastShine_
  • ์ „์ฒด
    ์˜ค๋Š˜
    ์–ด์ œ
  • 06-02 04:48
    • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (27)
      • ๐Ÿ’ป ๊ฐœ๋ฐœ (21)
        • ๐Ÿ–ฅ๏ธ ์šด์˜์ฒด์ œ (3)
        • ๐ŸŒ ๋„คํŠธ์›Œํฌ (0)
        • ๐Ÿ’พ Database (3)
        • ๐ŸŽ› Java (0)
        • ๐Ÿ–ฒ Javascript (0)
        • ๐Ÿ€ Spring (5)
        • ๐ŸŽธ ETC (4)
        • ๐Ÿ“ˆ ์•Œ๊ณ ๋ฆฌ์ฆ˜ (3)
        • ๐Ÿ“– TIL (Today I Learned) (3)
      • ๐Ÿ  ์ผ์ƒ (6)
        • ๐Ÿ““ ์ผ์ƒ ์ผ๊ธฐ (6)
  • ์ธ๊ธฐ ๊ธ€

  • ํƒœ๊ทธ

    e-book pdf ๋ณ€ํ™˜
    ๋ฐฑ์—”๋“œ
    ์ฝ˜์„œํŠธ์˜ˆ์•ฝ์„œ๋น„์Šค
    Python
    ๋น„๊ด€์ ๋ฝ
    ํšŒ๊ณ 
    ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
    ํŠธ๋žœ์žญ์…˜ ๋ถ„๋ฆฌ
    spring
    transactionaleventlistener
    6๊ธฐ
    Whisper API
    ๋Œ€๊ธฐ์—ด
    ์ฝ”๋”ฉํ…Œ์ŠคํŠธ
    ์•Œ๊ณ ๋ฆฌ์ฆ˜
    e-book pdf ์ถ”์ถœ
    redis
    ๋‚™๊ด€์ ๋ฝ
    ๋™์‹œ์„ฑ์ฒ˜๋ฆฌ
    ํ•ญํ•ดํ”Œ๋Ÿฌ์Šค
  • ์ตœ๊ทผ ๋Œ“๊ธ€

  • ์ตœ๊ทผ ๊ธ€

  • hELLOยท Designed By์ •์ƒ์šฐ.v4.10.1
EastShine_
[MariaDB] Auto Increment ๋œ ID๊ฐ’ ๋ฐ˜ํ™˜ํ•˜๊ธฐ
์ƒ๋‹จ์œผ๋กœ

ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”