ํ…Œ์ด๋ธ”์— ์–ด๋–ค ๋ฐ์ดํƒ€๋ฅผ insert, update, delete๋ฅผ ํ•  ๋•Œ๋Š” ํ•œ ๋ช…์˜ ์‚ฌ์šฉ์ž๋งŒ์ด ํ•ด๋‹น ํ…Œ์ด๋ธ”์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ด์ค€๋‹ค.


๊ทธ ๋Ÿฐ๋ฐ ๋งŒ์•ฝ Aํ…Œ์ด๋ธ”์—์„œ ๋ฐ์ดํƒ€๋ฅผ ์ฝ์–ด์™€์„œ ์ด์™€ ๊ด€๋ จ๋œ ๋‚ด์šฉ์„ Bํ…Œ์ด๋ธ”์— ๋„ฃ์œผ๋ ค๋Š”๋ฐ Bํ…Œ์ด๋ธ”์— FK๋กœ Aํ…Œ์ด๋ธ”์˜ PK๊ฐ€ ๊ฑธ๋ ค์žˆ๋‹ค๊ณ  ๊ฐ€์ •ํ•ด๋ณด์ž. ๋‚˜๋Š” Aํ…Œ์ด๋ธ”์—์„œ pk๊ฐ€ 1์ธ ๋ฐ์ดํƒ€๋ฅผ ์ฝ์–ด์™€์„œ Bํ…Œ์ด๋ธ”์— ์—…๋ฐ์ดํŠธ๋ฅผ ํ•ด์ค˜์•ผํ•˜๋Š”๋ฐ ๋ฐ์ดํƒ€๋ฅผ ์ฝ์–ด์™€์„œ ์—…๋ฐ์ดํŠธ ํ•˜๊ธฐ ์ „์— ๋ˆ„๊ตฐ๊ฐ€๊ฐ€ ๋ฐ์ดํƒ€ 1์„ ์ง€์›Œ๋ฒ„๋ ธ๋‹ค๋ฉด?? ๋‚ด๊ฐ€ Bํ…Œ์ด๋ธ”์— ์—…๋ฐ์ดํŠธ๋ฅผ ์‹œ๋„ํ•  ๋•Œ fk ์˜ค๋ฅ˜๊ฐ€ ๋‚  ๊ฒƒ์ด๋‹ค. pk๊ฐ€ ์‚ฌ๋ผ์กŒ์œผ๋‹ˆ ๋ง์ด๋‹ค.


์ž ์ด๋Ÿด ๋•Œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด select ... for update ์ด๋‹ค.

 


for update๋Š” ์ฝ์–ด์˜จ ๋ชจ๋“  rows์™€ ๊ทธ rows์™€ ๊ด€๋ จ๋œ ์ธ๋ฑ์Šค ์—”ํŠธ๋ฆฌ๊นŒ์ง€ lock์„ ํ•œ๋‹ค. ์ด๋Š” update๋ฌธ์„ ์‚ฌ์šฉํ–ˆ์„ ๋•Œ์™€ ๋™์ผํ•œ ๊ฒƒ์ด๋‹ค. for update๋กœ ์‹คํ–‰๋œ select๋ฌธ์€ ๋‹ค๋ฅธ ๋ชจ๋“  ์—…๋ฐ์ดํŠธ ๊ด€๋ จ ์ฟผ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค. ๋”ฐ๋ผ์„œ ๋˜ ๋‹ค๋ฅธ select ... for update ๋ฌธ ์—ญ์‹œ ๊ธฐ์กด ์„ธ์…˜์—์„œ commit์ด๋‚˜ rollback์ด ์‹คํ–‰๋˜๊ธฐ ์ „๊นŒ์ง€ ๊ธฐ๋‹ค๋ ธ๋‹ค๊ฐ€ ์ตœ์‹ ์ •๋ณด๋ฅผ selectํ•˜๊ฒŒ ๋œ๋‹ค.


์‚ฌ์šฉ๋ฒ•์€ ๋‹จ์ˆœํ•˜๋‹ค.


SQL > select * from emp for update;