๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋งฅ๋ฝ์์ ์ธ์ด๋ธํฌ์ธํธ๋ ๊ฐ๋ฐ์๊ฐ ํธ๋์ญ์ ์ ๋ ์์ ์ธ๊ทธ๋จผํธ๋ก ๋๋ ์ ์๋๋ก ํ๋ ์ค๊ฐ ๋จ๊ณ์ ๋๋ค. ์ด๋ ํนํ ์ฌ๋ฌ ๋ฐ์ดํฐ ์กฐ์ ๋ฌธ์ด ํฌํจ๋ ๋ณต์กํ ํธ๋์ญ์ ์ ์์ ํ ๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ค์ ๋ ํฐ ์ ์ด๋ ฅ๊ณผ ์ ์ฐ์ฑ์ ์ ๊ณตํฉ๋๋ค. ํธ๋์ญ์ ๋ด์์ ์ ์ฅ์ ์ ์ค์ ํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ์ ์ฒด ํธ๋์ญ์ ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ํน์ ์ ์ฅ์ ์ดํ์ ์ด๋ฃจ์ด์ง ๋ณ๊ฒฝ ์ฌํญ์ ์ ํ์ ์ผ๋ก ๋กค๋ฐฑํ๊ฑฐ๋ ์ปค๋ฐํ ์ ์์ต๋๋ค.
์ ์ฅ์ ์ฌ์ฉ์ ์ฃผ์ ์ด์ ์ค ํ๋๋ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์คํ ์ค์ ๋ฐ์ํ ์ ์๋ ์ค๋ฅ ๋ฐ ์์ธ๋ฅผ ์ฒ๋ฆฌํ ์ ์๋ค๋ ๊ฒ์ ๋๋ค. ์๋ฅผ ๋ค์ด ๋จ์ผ ํธ๋์ญ์ ์์ ์ฌ๋ฌ ์ฝ์ , ์ ๋ฐ์ดํธ ๋๋ ์ญ์ ๋ฅผ ์ํํ๋ ๊ฒฝ์ฐ ์๋ชป๋ ๋ฐ์ดํฐ ๋๋ ์ ์ฝ ์กฐ๊ฑด ์๋ฐ ๋ฑ์ ์์ธ์ผ๋ก ์ธํด ์ด๋ฌํ ์์ ์ค ํ๋๊ฐ ์คํจํ ๊ฐ๋ฅ์ฑ์ด ์์ต๋๋ค. ์ ์ฅ์ ์ด ์์ผ๋ฉด ๊ฐ๋ฐ์๋ ์ด์ ์ ์ฅ์ ์ผ๋ก ๋กค๋ฐฑํ ๋ค์ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ํ ์คํจํ ์์ ์ ๋ค์ ์๋ํ์ฌ ์ด๋ฌํ ์ค๋ฅ๋ฅผ ์ฝ๊ฒ ๋ณต๊ตฌํ ์ ์์ต๋๋ค.
์ ์ฅ์ ์ ์ฌ๋ฌ ํธ๋์ญ์ ์ด ๋์์ ์ํ๋ ์ ์๊ณ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ ๋ณด์ฅํ๋ ๊ฒ์ด ์ค์ํ ๋ ํฌ๊ณ ๋ณต์กํ ์์คํ ์์ ํนํ ์ ์ฉํฉ๋๋ค. ํธ๋์ญ์ ์ค ์ ๋ต์ ์ง์ ์ ์ ์ฅ์ ์ ์์ฑํ๋ฉด ์ ์ฌ์ ์ธ ์ค๋ฅ๋ ์ถฉ๋์ด ๋ฐ์ํ ์ ์๋ ์ํฉ์์๋ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ๊ณผ ์ผ๊ด์ฑ์ ์ ์งํ๊ธฐ๊ฐ ๋ ์ฌ์์ง๋๋ค.
์ ์ฅ์ ์ ํธ๋์ญ์ ์ ๋์ฒดํ๋ ๊ฒ์ด ์๋๋ผ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์คํ ์ ํธ๋์ญ์ ๋ฉ์ปค๋์ฆ์ ํ์ฅํ ๊ฒ์ด๋ผ๋ ์ ์ ์ฃผ๋ชฉํ ๊ฐ์น๊ฐ ์์ต๋๋ค. ์ด๋ ํธ๋์ญ์ ๊ณผ ๋์ผํ ACID(์์์ฑ, ์ผ๊ด์ฑ, ๊ฒฉ๋ฆฌ ๋ฐ ๋ด๊ตฌ์ฑ) ์์ฑ์ ์ง์ํ๋ฉฐ ํธ๋์ญ์ ๋ด์ ๊ฐ๋ณ ์์ ์ ๋ํด ๋ณด๋ค ์ธ๋ถ์ ์ธ ์์ค์ ์ ์ด๋ฅผ ์ ๊ณตํ๋ ์ด์ ๋ ์์ต๋๋ค.
๋ฐฑ์๋, ์น ๋ฐ ๋ชจ๋ฐ์ผ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์ฑํ๊ธฐ ์ํ ๊ฐ๋ ฅํ no-code ํ๋ซํผ์ธ AppMaster ๋ ๊ฐ๋ ฅํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ฉ์ดํ๊ฒ ํ๋ ๊ด๋ฒ์ํ ๊ธฐ๋ฅ ์ธํธ๋ฅผ ์ ๊ณตํฉ๋๋ค. ๊ทธ ์ค์์ AppMaster ํธ๋์ญ์ ์์ ์ ์ฅ์ ์ฌ์ฉ์ ์ง์ํ๋ฏ๋ก ๊ฐ๋ฐ์๋ ๋ณต์กํ ์์ ์ ์ฝ๊ฒ ๊ด๋ฆฌํ๊ณ ๋ฐ์ดํฐ ๋ฌด๊ฒฐ์ฑ์ ์ ์งํ ์ ์์ต๋๋ค. ์ด๋ ๋ฐ์ดํฐ ์ผ๊ด์ฑ์ด ๊ฐ์ฅ ์ค์ํ ์ํฐํ๋ผ์ด์ฆ๊ธ ์ ํ๋ฆฌ์ผ์ด์ ์ ๊ฐ๋ฐํ๋ AppMaster ์ฌ์ฉ์์๊ฒ ํนํ ์ค์ํฉ๋๋ค.
์ค์ ์๋๋ฆฌ์ค์์๋ ์ ์์๊ฑฐ๋ ์น์ฌ์ดํธ์ ๋ํ ๊ณ ๊ฐ ์ฃผ๋ฌธ์ ์ฒ๋ฆฌํ๋ AppMaster ์ฌ์ฉํ์ฌ ๊ฐ๋ฐ๋ ์น ์ ํ๋ฆฌ์ผ์ด์ ์ ์๊ฐํด ๋ณด์ธ์. ์ด ์ ํ๋ฆฌ์ผ์ด์ ์๋ ์ฃผ๋ฌธ ๊ธฐ๋ก ์์ฑ, ์ฌ๊ณ ์ ๋ฐ์ดํธ, ๊ณ ๊ฐ ์ง๋ถ ๊ธฐ๋ก ๋ฑ ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ด ํฌํจ๋ฉ๋๋ค. ์ ์ฅ์ ์ ์ฌ์ฉํ๋ฉด ๊ฐ๋ฐ์๋ ๊ฐ ์์ ํ์ ๋ง์ผ์คํค์ ์ค์ ํ ์ ์์ผ๋ฏ๋ก ์ด๋ฌํ ๋จ๊ณ ์ค ํ๋๋ผ๋ ์คํจํ ๊ฒฝ์ฐ ์ค๋ฅ๋ฅผ ๋ ์ฝ๊ฒ ์ฒ๋ฆฌํ ์ ์์ต๋๋ค. ์๋ฅผ ๋ค์ด ๊ฒฐ์ ์์ ์์ ๋ฌธ์ ๊ฐ ๋ฐ์ํ๋ฉด ๊ฒฐ์ ์์ ์ ์ ํธ๋์ญ์ ์ ์ ์ฅ์ ์ผ๋ก ๋กค๋ฐฑํ์ฌ ์์คํ ์ด ์ด๋ฏธ ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ์ปค๋ฐ๋ ์ด์ ์์ ์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์์ ์ ๋ค์ ์๋ํ๊ฑฐ๋ ์ฌ์ฉ์์๊ฒ ๋ฌธ์ ๋ฅผ ์๋ฆด ์ ์์ต๋๋ค.
๊ฐ๋ ์ ๋ ์์ธํ ์ค๋ช ํ๊ธฐ ์ํด ๋ค์ ์์ฌ ์ฝ๋๋ ๊ฐ์ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์์ ์ ์ฅ์ ์ด ์ด๋ป๊ฒ ๊ตฌํ๋ ์ ์๋์ง ๋ณด์ฌ์ค๋๋ค.
๊ฑฐ๋๋ฅผ ์์ํ์ธ์.
INSERT INTO ์ฃผ๋ฌธ (...) VALUES (...);
SAVEPOINT ์ฃผ๋ฌธ_์์ฑ๋จ;
์
๋ฐ์ดํธ ์ธ๋ฒคํ ๋ฆฌ ์ธํธ (...) WHERE (...);
SAVEPOINT ์ฌ๊ณ _์
๋ฐ์ดํธ;
๊ฒฐ์ ์ ์ฝ์
(...) ๊ฐ (...);
IF error_occurred THEN
SAVEPOINT๋ก ๋กค๋ฐฑ Inventory_updated;
๋ ๋ค๋ฅธ
์ ์ง๋ฅด๋ค;
์ข
๋ฃํ๋ฉด;
๊ฑฐ๋ ์ข
๋ฃ;
์ด ์์์๋ ๋ ๊ฐ์ ์ ์ฅ์ ์ด ์์ฑ๋๋๋ฐ, ํ๋๋ ์ ์ฃผ๋ฌธ ๊ธฐ๋ก์ ์ฝ์ ํ ํ์ด๊ณ ๋ค๋ฅธ ํ๋๋ ์ฌ๊ณ ๋ฅผ ์ ๋ฐ์ดํธํ ํ์ ๋๋ค. ๊ฒฐ์ ์์ ์ค ์ค๋ฅ๊ฐ ๋ฐ์ํ๋ฉด ๊ฑฐ๋๋ฅผ 'inventory_updated' ์ ์ฅ์ ์ผ๋ก ๋กค๋ฐฑํ ์ ์์ด ์์คํ ์ด ์ ์ฒด ๊ฑฐ๋์ ์ํฅ์ ์ฃผ์ง ์๊ณ ์ค๋ฅ๋ฅผ ์ ์์ ์ผ๋ก ์ฒ๋ฆฌํ ์ ์์ต๋๋ค.
๊ฒฐ๋ก ์ ์ผ๋ก ์ ์ฅ์ ์ ๊ด๊ณํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ๋ถ์ผ์์ ๋งค์ฐ ๊ท์คํ ๋๊ตฌ๋ก, ํธ๋์ญ์ ์ ๋ํ ๋ณด๋ค ์ ๋ฐํ ์ ์ด ์์ค์ ์ ๊ณตํ๊ณ ์ค๋ฅ ์ฒ๋ฆฌ ๊ธฐ๋ฅ์ ํฅ์์ํต๋๋ค. AppMaster ํ๋ซํผ ๋ด์ ์ ์ฅ์ ์ ํ์ฉํจ์ผ๋ก์จ ๊ฐ๋ฐ์๋ ๋ณต์กํ ๋ฐ์ดํฐ๋ฒ ์ด์ค ์์ ์ ์ฝ๊ฒ ์ฒ๋ฆฌํ๊ณ ๊ฐ๋ฐ ํ๋ก์ธ์ค์ ๋ชจ๋ ๋จ๊ณ์์ ๋ฐ์ดํฐ ์ผ๊ด์ฑ๊ณผ ๋ฌด๊ฒฐ์ฑ์ ๋ณด์ฅํ๋ ํ์ฅ ๊ฐ๋ฅํ๊ณ ๊ฐ๋ ฅํ ์ ํ๋ฆฌ์ผ์ด์ ์ ๋ง๋ค ์ ์์ต๋๋ค.