[SQL] SELECT FOR UPDATE

๋ด„ยท2025๋…„ 7์›” 10์ผ
0

SQL

๋ชฉ๋ก ๋ณด๊ธฐ
99/126

๋ฌธ์ œ1. ์ง์—…์ด SALESMAN ์ธ ์‚ฌ์›๋“ค์˜ ์ด๋ฆ„๊ณผ ์›”๊ธ‰๊ณผ ์ง์—…์„ ๋ณด๋Š” ๋™์•ˆ ๊ทธ ๋ˆ„๊ตฌ๋„ SALESMAN ์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐฑ์‹ ํ•˜์ง€ ๋ชปํ•˜๋„๋ก LOCK ์„ ๊ฑธ๋ฉด์„œ ๋ณด์„ธ์š”

select ename, sal, job
  from emp
  where job='SALESMAN'
  for update wait 60;

๐Ÿ’ก for update wait 60
: 60์ดˆ๋™์•ˆ ๋ฝ(lock)์„ ๊ฑธ๊ฒ ๋‹ค
(๋‹ค๋ฅธ ์„ธ์…˜์ด ํ˜น์‹œ update๋ฅผ ํ•˜๊ฒŒ ๋˜๋ฉด 60์ดˆ๋งŒ ๊ธฐ๋‹ค๋ฆฌ๋ฉด ํ’€๋ฆฌ๊ฒŒ ํ•˜๊ฒ ๋‹ค)


๐Ÿ’ก dba๊ฐ€ ๋ฝ(lock)๋ฌธ์ œ๊ฐ€ db์— ์ž์ฃผ ๋ฐœ์ƒํ•ด์„œ ๋ฝ์œผ๋กœ ์ธํ•ด ์„ฑ๋Šฅ์ƒ์— ๋ฌธ์ œ๊ฐ€ ์ž์ฃผ ์ƒ๊ธด๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์กฐ์น˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ์Œ. ํŠน์ • ์„ธ์…˜์ด ์ž‘์—…ํ•  ๋•Œ ์ž๋™ ์ปค๋ฐ‹๊ธฐ๋Šฅ์„ ์ด์šฉํ•˜๊ฒŒ๋” ๊ถŒ์žฅํ•  ์ˆ˜ ์žˆ์Œ

-- ์ž๋™์ปค๋ฐ‹ ๊ธฐ๋Šฅ ํ™•์ธ
show  autocommit;

-- ์ž๋™์ปค๋ฐ‹ ๊ธฐ๋Šฅ ์ผฌ
set autocommit on;

show autocommit;

-- ์ž๋™์ปค๋ฐ‹ ๋จ
update emp
set sal = 0
where ename='ALLEN';

-- ์ž๋™์ปค๋ฐ‹ ๊ธฐ๋Šฅ ๋”
set autocommit off;

show autocommit;

๐Ÿ’ก ์˜ค๋ผํด์€ autocommit์ด ์ž๋™์œผ๋กœ ์ผœ์ ธ์žˆ์ง€ ์•Š์€๋ฐ
mysql์€ default๊ฐ€ autocommit์ด ์ž๋™์œผ๋กœ ์ผœ์ ธ์žˆ์Œ

0๊ฐœ์˜ ๋Œ“๊ธ€