๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
๐Ÿ’ป Computer Science/๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค

[๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค] Transaction(ํŠธ๋žœ์žญ์…˜)๊ณผ ACID ๋ž€?

by Jay Din 2023. 11. 23.
728x90
๋ฐ˜์‘ํ˜•

Transaction(ํŠธ๋žœ์žญ์…˜)์ด๋ž€?

transaction์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋‚ด์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…(์‚ฝ์ž…, ๊ฐฑ์‹ , ์‚ญ์ œ)์˜ ์ตœ์†Œ ๋‹จ์œ„์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉฐ DB์˜ ์ƒํƒœ๋ฅผ ๋ณ€ํ™”์‹œํ‚ค๋Š” ๊ธฐ๋Šฅ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

transaction์€ ํ•˜๋‚˜ ์ด์ƒ์˜ query๋ฅผ ํฌํ•จํ•ด์•ผ ํ•˜๊ณ , ACID๋ผ๊ณ  ์นญํ•ด์ง€๋Š” ์›์ž์„ฑ, ์ผ๊ด€์„ฑ, ๊ณ ๋ฆฝ์„ฑ, ์ง€์†์„ฑ์˜ 4๊ฐ€์ง€ ๊ทœ์น™์„ ๋งŒ์กฑํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

 

Transaction(ํŠธ๋žœ์žญ์…˜) ๊ตฌ์กฐ

ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ผ์–ด๋‚˜๋Š” ์ž‘์—…์„ ๋…ผ๋ฆฌ์ ์œผ๋กœ ๋ฌถ์–ด์„œ ๊ด€๋ฆฌํ•ฉ๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” COMMIT๊ณผ ROLLBACK ๋ช…๋ น์–ด๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•ฉ๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ์•ˆ์ „ํ•˜๊ณ  ์‹ ๋ขฐ์„ฑ ์žˆ๋Š” ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•œ ์ค‘์š”ํ•œ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค.

๋ณต์žกํ•œ ๋‹ค์ค‘ ์‚ฌ์šฉ์ž ํ™˜๊ฒฝ์—์„œ์˜ ๋ฐ์ดํ„ฐ ์กฐ์ž‘์„ ํšจ๊ณผ์ ์œผ๋กœ ๊ด€๋ฆฌํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•ฉ๋‹ˆ๋‹ค.

 

์‹œ์ž‘(Begin)

ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘์„ ๋‚˜ํƒ€๋‚ด๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๊ด€๋ฆฌ ์‹œ์Šคํ…œ(DBMS)์€ ์ด ์ง€์ ์—์„œ ํŠธ๋žœ์žญ์…˜ ๊ธฐ๋ก์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.

์‹คํ–‰(Execute)

์‹ค์ œ๋กœ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์ˆ˜ํ–‰๋˜๋Š” ์ž‘์—…๋“ค์ด ์ด ๋ถ€๋ถ„์—์„œ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค.

SQL๋ฌธ์„ ์‚ฌ์šฉํ•˜์—ฌ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์กฐ์ž‘์„ ์ˆ˜ํ–‰ํ•˜๊ณ , ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๋Š” ๋“ฑ์˜ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.

์ปค๋ฐ‹(Commit)

ํŠธ๋žœ์žญ์…˜์˜ ์„ฑ๊ณต์ ์ธ ์™„๋ฃŒ๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์˜๊ตฌ์ ์œผ๋กœ ์ €์žฅํ•˜๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํ•ด๋‹น ํŠธ๋žœ์žญ์…˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ํ™•์ •ํ•˜๊ณ  ๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜๋“ค๋„ ํ•ด๋‹น ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

๋กค๋ฐฑ(Rollback)

ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•˜๊ฑฐ๋‚˜ ์ทจ์†Œ๋˜์–ด์•ผ ํ•  ๋•Œ, ํŠธ๋žœ์žญ์…˜์˜ ๋ชจ๋“  ๋ณ€๊ฒฝ์‚ฌํ•ญ์„ ์ทจ์†Œํ•˜๊ณ  ์ด์ „์˜ ์ƒํƒœ๋กœ ๋˜๋Œ๋ฆฌ๋Š” ๋ถ€๋ถ„์ž…๋‹ˆ๋‹ค.

๋กค๋ฐฑ์ด ๋ฐœ์ƒํ•˜๋ฉด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ํŠธ๋žœ์žญ์…˜์˜ ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ๋ฒ„๋ฆฌ๊ณ  ํŠธ๋žœ์žญ์…˜์˜ ์‹œ์ž‘ ์ „ ์ƒํƒœ๋กœ ๋ณต์›๋ฉ๋‹ˆ๋‹ค.

 

ACID ๋ž€?

ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ๋ฌด๊ฒฐ์„ฑ์„ ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Atomicity(์›์ž์„ฑ), Consistency(์ผ๊ด€์„ฑ), Isolation(๊ณ ๋ฆฝ์„ฑ), Durability (์ง€์†์„ฑ)์˜ ์„ฑ์งˆ์„ ๊ฐ–์Šต๋‹ˆ๋‹ค.

Atomicity
(์›์ž์„ฑ)
transaction์— ํฌํ•จ๋œ ์ž‘์—…์€ ์ „๋ถ€ ์ˆ˜ํ–‰๋˜๊ฑฐ๋‚˜ ์•„์‹œ๋ฉด ์ „๋ถ€ ์ˆ˜ํ–‰๋˜์ง€ ๋ง์•„์•ผํ•ฉ๋‹ˆ๋‹ค.(all or nothing)
์ฆ‰, ํŠธ๋žœ์žญ์…˜์ด ์‹คํŒจํ•˜๋ฉด ์–ด๋– ํ•œ ์ž‘์—…๋„ ์˜๊ตฌ์ ์œผ๋กœ ์ ์šฉ๋˜์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Consistency
(์ผ๊ด€์„ฑ)
transaction์ด ์‹คํ–‰์„ ์„ฑ๊ณต์ ์œผ๋กœ ์™„๋ฃŒํ•˜๋ฉด ์–ธ์ œ๋‚˜ ์ผ๊ด€์„ฑ ์žˆ๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์ƒํƒœ๋กœ ์œ ์ง€ํ•˜๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์†ก๊ธˆ ์ „ํ›„ ๋ชจ๋‘ ์ž”์•ก์˜ data type์€ integer์ด์—ฌ์•ผ ํ•œ๋‹ค๋Š” ๊ฒƒ์ด ์ผ๊ด€์„ฑ์˜ ํ•œ ์˜ˆ๊ฐ€ ๋  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
ํŠธ๋žœ์žญ์…˜์ด ์ผ๊ด€์„ฑ์„ ์œ ์ง€ํ•˜์ง€ ๋ชปํ•˜๋ฉด ํŠธ๋žœ์žญ์…˜์ด ๋กค๋ฐฑ(์ „์ฒด ์ทจ์†Œ)๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.
Isolation
(๊ฒฉ๋ฆฝ์„ฑ)
์—ฌ๋Ÿฌ transaction์€ ๋™์‹œ์— ์ˆ˜ํ–‰๋  ๋•Œ,
๊ฐ transaction์€ ๋‹ค๋ฅธ transaction์˜ ์—ฐ์‚ฐ ์ž‘์—…์— ๋ผ์–ด๋“ค์ง€ ๋ชปํ•˜๋„๋ก ๋ณด์žฅํ•˜์—ฌ ๋…๋ฆฝ์ ์œผ๋กœ ์ž‘์—…์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์ด๋Š” ๋™์‹œ์„ฑ ์ œ์–ด(concurrency control) ๋ฅผ ํ†ตํ•ด ๋ณด์žฅ๋‹ˆ๋‹ค.
Durability
(์ง€์†์„ฑ)
์„ฑ๊ณต์ ์œผ๋กœ ์ˆ˜ํ–‰๋œ transaction์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์˜์›ํžˆ ๋ฐ˜์˜๋˜์–ด์•ผ ํ•จ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
transaction์ด ์™„๋ฃŒ๋˜์–ด ์ €์žฅ์ด ๋œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋Š” ์ €์žฅ ํ›„์— ์ƒ๊ธฐ๋Š” ์ •์ „, ์žฅ์• , ์˜ค๋ฅ˜ ๋“ฑ์— ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š์•„์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

๋™์‹œ์„ฑ ์ œ์–ด(concurrency control)

๋™์‹œ์„ฑ ์ œ์–ด(Concurrency Control)๋Š” ๋‹ค์ค‘ ์‚ฌ์šฉ์ž๊ฐ€ ๋™์‹œ์— ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์— ์ ‘๊ทผํ•˜๊ณ  ์กฐ์ž‘ํ•  ๋•Œ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ข… ๋ฌธ์ œ๋ฅผ ๊ด€๋ฆฌํ•˜๊ณ  ์ œ์–ดํ•˜๋Š” ๊ธฐ์ˆ  ๋ฐ ๊ธฐ๋ฒ•์ž…๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ ์ œ์–ด ๋ฐฉ๋ฒ•

๋™์‹œ์„ฑ ์ œ์–ด๋Š” ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์•ˆ์ •์„ฑ๊ณผ ์„ฑ๋Šฅ์„ ๋™์‹œ์— ์œ ์ง€ํ•˜๊ธฐ ์œ„ํ•ด ์ค‘์š”ํ•˜๋ฉฐ, ํšจ๊ณผ์ ์ธ ๊ด€๋ฆฌ๋ฅผ ํ†ตํ•ด ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์˜ ์ผ๊ด€์„ฑ๊ณผ ๋ฌด๊ฒฐ์„ฑ์„ ๋ณด์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๋ฝ(Lock) ๊ธฐ๋ฐ˜ ์ œ์–ด

ํŠธ๋žœ์žญ์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ์“ฐ๊ธฐ ์ „์— ํ•ด๋‹น ๋ฐ์ดํ„ฐ์— ๋ฝ์„ ์„ค์ •ํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜์ด ์™„๋ฃŒ๋˜๋ฉด ๋ฝ์„ ํ•ด์ œํ•ฉ๋‹ˆ๋‹ค.

๋‹ค๋ฅธ ํŠธ๋žœ์žญ์…˜์€ ๋ฝ์ด ํ•ด์ œ๋  ๋•Œ๊นŒ์ง€ ๋Œ€๊ธฐํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

ํŠธ๋žœ์žญ์…˜ ์ผ์ •(Schedule) ์กฐ์ ˆ

ํŠธ๋žœ์žญ์…˜๋“ค์˜ ์‹คํ–‰ ์ˆœ์„œ๋ฅผ ์กฐ์ ˆํ•˜์—ฌ ์ถฉ๋Œ์„ ํ”ผํ•˜๋„๋ก ์ผ์ •์„ ์กฐ์ ˆํ•ฉ๋‹ˆ๋‹ค.

์ด๋ฅผ ํ†ตํ•ด ๊ฒฉ๋ฆฌ์„ฑ์„ ์œ ์ง€ํ•˜๋ฉด์„œ๋„ ์„ฑ๋Šฅ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฉ๋ฆฌ ์ˆ˜์ค€(Isolation Level) ์„ค์ •

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹œ์Šคํ…œ์—์„œ ํŠธ๋žœ์žญ์…˜ ๊ฐ„์˜ ๊ฒฉ๋ฆฌ ์ˆ˜์ค€์„ ์„ค์ •ํ•˜์—ฌ ์–ผ๋งˆ๋‚˜ ๋งŽ์€ ํŠธ๋žœ์žญ์…˜ ๊ฐ„์— ๋ฐ์ดํ„ฐ๋ฅผ ๊ณต์œ ํ•  ๊ฒƒ์ธ์ง€ ๊ฒฐ์ •ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

๊ฒฉ๋ฆฌ ์ˆ˜์ค€์€ 'Read Uncommitted', 'Read Committed', 'Repeatable Read', 'Serializable' ๋“ฑ์œผ๋กœ ๋‚˜๋‰ฉ๋‹ˆ๋‹ค.

๋ฒ„์ „ ๊ด€๋ฆฌ(Versioning)

ํŠธ๋žœ์žญ์…˜์ด ๋ฐ์ดํ„ฐ๋ฅผ ์ฝ์„ ๋•Œ๋งˆ๋‹ค ๋ฐ์ดํ„ฐ์˜ ๋ฒ„์ „์„ ๊ธฐ๋กํ•˜๊ณ , ํŠธ๋žœ์žญ์…˜์ด ์ปค๋ฐ‹๋  ๋•Œ ํ•ด๋‹น ๋ฒ„์ „์„ ํ™•์ธํ•˜์—ฌ ์ถฉ๋Œ์„ ๋ฐฉ์ง€ํ•˜๋Š” ๋ฐฉ์‹์ž…๋‹ˆ๋‹ค.

๋™์‹œ์„ฑ ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜

๋‹ค์–‘ํ•œ ๋™์‹œ์„ฑ ์ œ์–ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์กด์žฌํ•˜๋ฉฐ, ์ด ์ค‘์—๋Š” ํŠน์ • ์ƒํ™ฉ์—์„œ ํšจ๊ณผ์ ์ธ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๋Œ€ํ‘œ์ ์ธ ์˜ˆ๋กœ๋Š” ํŠธ๋žœ์žญ์…˜์˜ ์Šค์ผ€์ฅด๋ง์„ ์กฐ์ ˆํ•˜๋Š” Two-Phase Locking(2PL) ์•Œ๊ณ ๋ฆฌ์ฆ˜์ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

Transaction(ํŠธ๋žœ์žญ์…˜) ์˜ˆ์‹œ

์€ํ–‰ ์‹œ์Šคํ…œ์—์„œ A๊ฐ€ 100๋งŒ์›์„ ์ถœ๊ธˆํ•ด์„œ B์—๊ฒŒ ์ž…๊ธˆํ•˜๋Š” ์ƒํ™ฉ์„ ์ƒ๊ฐํ•ด ๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.

A์˜ ์ž”๊ณ ์—์„œ 100๋งŒ์›์„ ์ถœ๊ธˆํ•˜์˜€๋Š”๋ฐ, ์ด ๋•Œ ์ „์‚ฐ์˜ค๋ฅ˜๊ฐ€ ์ƒ๊ฒจ์„œ B์˜ ๊ณ„์ขŒ์—๋Š” 100๋งŒ์›์ด ์ž…๊ธˆ ๋˜์ง€ ์•Š์•˜์Šต๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์ƒํ™ฉ์€ ์ „์‚ฐ์‹œ์Šคํ…œ์˜ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜์ž…๋‹ˆ๋‹ค.

 

์ด๋ ‡๊ฒŒ ์˜ˆ์ƒ์น˜ ๋ชปํ•˜๊ฒŒ ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์—ฌ ๋ฐ์ดํ„ฐ์˜ ๋ถ€์ •ํ•ฉ์ด ๋ฐœ์ƒํ•˜๋Š” ๊ฒฝ์šฐ, ๋‹ค์‹œ ์›์ƒ๋ณต๊ท€ ํ•ด์•ผํ•ฉ๋‹ˆ๋‹ค.

๋”ฐ๋ผ์„œ ๋ชจ๋“  ์ž…์ถœ๊ธˆ์€ ํ•˜๋‚˜์˜ ๋ฌถ์Œ ํ˜•ํƒœ๋กœ ์ž‘๋™ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ถœ๊ธˆ์„ ํ–ˆ์œผ๋ฉด ์ž…๊ธˆ์„ ๋งˆ์น˜๋˜์ง€ ์•„๋‹ˆ๋ฉด ์•„์˜ˆ ์—†๋˜ ์ผ์ด ๋˜์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

์ด๋Ÿฐ ์‹์œผ๋กœ ๋‘ ํ–‰์œ„๋Š” ๋ถ„๋ฆฌ ๋  ์ˆ˜ ์—†๋Š” ํ•˜๋‚˜์˜ ๊ฑฐ๋ž˜๋กœ ์ฒ˜๋ฆฌ๋ผ์•ผ ํ•˜๋Š” ๋‹จ์ผ ์—…๋ฌด์ž…๋‹ˆ๋‹ค.

์ด๋Ÿฌํ•œ ์—…๋ฌด ์ฒ˜๋ฆฌ์˜ ์ตœ์†Œ ๋‹จ์œ„๋ฅผ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ๋Š” transaction์ด๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

 

๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ Transaction์ด ํ•„์š”ํ•œ ์ด์œ ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ ์žฅ์• ๊ฐ€ ์ผ์–ด๋‚˜๋Š” ๊ฒฝ์šฐ Transaction์€ ์žฅ์•  ๋ฐœ์ƒ์‹œ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณต๊ตฌํ•˜๋Š” ์ž‘์—…์˜ ๋‹จ์œ„๊ฐ€ ๋˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

๋˜ํ•œ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค์—์„œ ์—ฌ๋Ÿฌ ์ž‘์—…์ด ๋™์‹œ์— ๊ฐ™์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

transaction์„ ํ†ตํ•ด ์ด ์ž‘์—…์„ ์„œ๋กœ ๋ถ„๋ฆฌํ•˜๊ณ , ์ด๋ฅผ ํ†ตํ•ด ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•˜์ง€ ์•Š๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค.

DBMS๋Š” transaction์ด ์ด๋Ÿฌํ•œ ๊ทœ์น™์„ ์œ ์ง€ํ•˜๋„๋ก ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

START TRANSACTION

// (1) A ๊ณ„์ขŒ ์ž”์•ก ๊ฐ€์ ธ์˜ด A = 1000
// (2) B ๊ณ„์ขŒ ์ž”์•ก ๊ฐ€์ ธ์˜ด B = 1000

// (3) A ์ถœ๊ธˆ  A = A - 100
// (4) B ์ž…๊ธˆ  B = B + 100
UPDATE Customer SET balance = balance - 100 WHERE name='A';
UPDATE Customer SET balance = balance + 100 WHERE name='B';

//COMMIT

// (5) A ๊ณ„์ขŒ ์ž”์•ก ์ €์žฅ A = 900
// (6) B ๊ณ„์ขŒ ์ž”์•ก ์ €์žฅ B = 1100

COMMIT

 

 


์ฐธ๊ณ 

https://s3.ap-northeast-2.amazonaws.com/upload.xangle.io/images/content/common/Untitled_3-e8edca25-d72e-4f6f-9c5a-659e4935bb70.jpeg

https://www.nossi.dev/

728x90
๋ฐ˜์‘ํ˜•