YS's develop story

MySQL ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ๊ฐ’ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ LAST_INSERT_ID() ํ•จ์ˆ˜ ํ™œ์šฉ ๋ณธ๋ฌธ

Database/MySQL

MySQL ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ๊ฐ’ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ LAST_INSERT_ID() ํ•จ์ˆ˜ ํ™œ์šฉ

Yusang 2021. 6. 21. 09:59

๐Ÿ‘จ‍๐Ÿ’ป  ์ตœ๊ทผ์— ์ถ”๊ฐ€๋œ ๊ฐ’์˜ ์ธ๋ฑ์Šค ์ฐพ๊ธฐ, LAST_INSERT_ID() ํ•จ์ˆ˜ ํ™œ์šฉ

 

โŒ› Problem

 

๋ฐ์ดํ„ฐ๊ฐ€ ์ถ”๊ฐ€๋  ๋•Œ๋งˆ๋‹ค ๊ฐ ํŠœํ”Œ๋“ค์„ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ…Œ์ด๋ธ”์„ ์„ค๊ณ„ํ•  ๋•Œ

ํ…Œ์ด๋ธ”์˜ PK๋ฅผ Auto_Increment๋กœ ์„ค์ •ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋งค์šฐ ๋งŽ์Šต๋‹ˆ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด Reviews๋ผ๋Š” ํ…Œ์ด๋ธ”์— ๋ฆฌ๋ทฐ๋ฅผ ๋“ฑ๋กํ•œ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด ๋ด…์‹œ๋‹ค.

INSERT INTO Reviews(hospitalIdx, userIdx, review, reviewScore) VALUES (?,?,?,?);

 

์ด ์ƒํ™ฉ์—์„œ ํŠน์ • ์‚ฌ์šฉ์ž๊ฐ€ ๋“ฑ๋กํ•œ ๋ฆฌ๋ทฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” Reviewsํ…Œ์ด๋ธ”์—์„œ

์‚ฌ์šฉ์ž๊ฐ€ ์ž‘์„ฑํ•œ ๋ฆฌ๋ทฐ๊ฐ€ ๋ช‡ ๋ฒˆ์งธ ํŠœํ”Œ์ธ์ง€ ์•Œ์•„์•ผ ํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์•Œ์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๊ทธ๋ ‡๋‹ค๋ฉด ์•„๋ž˜์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฆฌ๋ทฐ ํ…Œ์ด๋ธ”์˜ PK๋ฅผ ์ฐพ์œผ๋ฉด ๋ ๊นŒ์š”?

SELECT reviewIdx 
FROM Reviews 
WHERE hospitalIdx = ? AND userIdx = ? AND review = ? AND reviewScore = ?

๋ฌผ๋ก  ์ด๋Ÿฐ ๋ฐฉ๋ฒ•์œผ๋กœ๋„ ์ฐพ์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ์ด๋Š” ์ฟผ๋ฆฌ๋ฅผ ์ƒˆ๋กญ๊ฒŒ ๋˜ ์งœ์•ผํ•˜๊ธฐ์— ๋น„ํšจ์œจ์ ์ด๊ณ 

์‚ฌ์šฉ์ž๊ฐ€ ๋˜‘๊ฐ™์€ ๋ณ‘์›์— ๋˜‘๊ฐ™์€ ๋ฆฌ๋ทฐ์— ๋˜‘๊ฐ™์€ ์ ์ˆ˜๋ฅผ ์ž‘์„ฑํ–ˆ๋‹ค๊ณ  ํ•˜๋ฉด ๋˜ ์ด์Šˆ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

๐Ÿ“œ Solution

 

๊ทธ๋ž˜์„œ ์ด๋Ÿฐ ๊ฒฝ์šฐ์— LAST_INSERT_ID() ํ™œ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

์ด๋Š” ํ…Œ์ด๋ธ”์˜ ๋งˆ์ง€๋ง‰์— ์ž…๋ ฅ๋œ Auto_Increment ๊ฐ’์„ ๋ฆฌํ„ดํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. 

์ฆ‰ ์ด ๊ฒฝ์šฐ์—์„œ ๋งˆ์ง€๋ง‰์— ์ƒ์„ฑ๋œ reviewIdx๋ฅผ ๋งค์šฐ ์‰ฝ๊ฒŒ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

 

๋ฐ”๋กœ ํ™•์ธํ•ด ๋ด…์‹œ๋‹ค.

 

์•„๋ž˜์™€ ๊ฐ™์€ ์ฟผ๋ฆฌ๋ฅผ ํ†ตํ•ด "์ตœ๊ณ "๋ผ๋Š” ๋ฆฌ๋ทฐ๋ฅผ ๋“ฑ๋กํ–ˆ์Šต๋‹ˆ๋‹ค.

์ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— 10์ด๋ผ๋Š” PK๊ฐ’์„ ๊ฐ€์ง€๋ฉฐ reviewIdx์ปฌ๋Ÿผ์— ์ €์žฅ๋˜์—ˆ๋„ค์š”. 

INSERT INTO Reviews(hospitalIdx, userIdx, review, reviewScore) VALUES (1,1,"์ตœ๊ณ ",3.7);

 

 

์•„๋ž˜์™€ ๊ฐ™์ด LAST_INSERT_ID() ํ•จ์ˆ˜๋ฅผ ํ†ตํ•ด ๋งˆ์ง€๋ง‰์— ์ž…๋ ฅ๋œ Auto_Increment ๋ฆฌํ„ดํ•˜๊ณ  ์žˆ์Œ์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

SELECT LAST_INSERT_ID() AS reviewIdx;

 

 

Comments