2-3-2. TCL
Last updated
Was this helpful?
Last updated
Was this helpful?
νΈλμμ μ λ°μ΄ν°λ² μ΄μ€μ λ Όλ¦¬μ μ°μ°λ¨μμ΄λ€. νΈλμμ (TRANSACTION)μ΄λ λ°μ ν κ΄λ ¨λμ΄ λΆλ¦¬λ μ μλ ν κ° μ΄μμ λ°μ΄ν°λ² μ΄μ€ μ‘°μμ κ°λ¦¬ν¨λ€. νλμ νΈλμμ μλ νλ μ΄μμ SQL λ¬Έμ₯μ΄ ν¬ν¨λλ€. νΈλμμ μ λΆν ν μ μλ μ΅μμ λ¨μμ΄λ€. κ·Έλ κΈ° λλ¬Έμ μ λΆ μ μ©νκ±°λ μ λΆ μ·¨μνλ€. μ¦ TRANSACTIONμ ALL OR NOTHINGμ κ°λ μΈ κ²μ΄λ€. μνμμμ κ³μ’μ΄μ²΄ μν©μ μ°μνλ©΄ νΈλμμ μ μ΄ν΄νλλ° λμμ΄ λλ€. κ³μ’μ΄μ²΄λ μ΅μν λ κ°μ§ μ΄μμ μμ μΌλ‘ μ΄λ£¨μ΄μ Έ μλ€. μ°μ μμ μ κ³μ’μμ μμ‘μ νμΈνκ³ μ΄μ²΄ν κΈμ‘μ μΈμΆν λ€μ λλ¨Έμ§ κΈμ‘μ μ μ₯νλ€. κ·Έλ¦¬κ³ μ΄μ²΄ν κ³μ’λ₯Ό νμΈνκ³ μμμ μΈμΆν κΈμ‘μ λν λ€μμ μ μ₯νλ©΄ κ³μ’μ΄μ²΄κ° μ±κ³΅νλ€.
κ³μ’μ΄μ²΄ μ¬λ‘
STEP1. 100λ² κ³μ’μ μμ‘μμ 10,000μμ λΊλ€.
STEP2. 200λ² κ³μ’μ μμ‘μ 10,000μμ λνλ€.
κ³μ’μ΄μ²΄λΌλ μμ λ¨μλ μ΄λ° λ κ°μ μ λ°μ΄νΈκ° λͺ¨λ μ±κ³΅μ μΌλ‘ μλ£λμμ λ μ’ λ£λλ€. λ μ€ νλλΌλ μ€ν¨ν κ²½μ° κ³μ’μ΄μ²΄λ μλμ κΈμ‘μ μ μ§νκ³ μμ΄μΌλ§ νλ€. λ§μ½ μ΄λ ν μ₯μ μ μν΄ μ΄λ μͺ½μ΄λ ν μͺ½λ§ μ€ννμ κ²½μ°, μ΄μ²΄ν κΈμ‘μ μ΄λλ‘ μ¦λ°ν΄ λ²λ Έκ±°λ λ§μλλ‘ μ¦κ°νκ² λλ€. λΉμ°ν κ·Έλ° μΌμ΄ μμ΄μλ μ λλ―λ‘ μ΄λ¬ν κ²½μ°μλ μμ μ μ·¨μνμ¬ μ μνλ‘ λλλ €μΌ νλ€. μ΄λ° κ³μ’μ΄μ²΄ κ°μ νλμ λ Όλ¦¬μ μΈ μμ λ¨μλ₯Ό ꡬμ±νλ μΈλΆμ μΈ μ°μ°λ€μ μ§ν©μ νΈλμμ μ΄λΌ νλ€. μ΄λ° κ΄μ μμ λ°μ΄ν°λ² μ΄μ€ μμ© νλ‘κ·Έλ¨μ νΈλμμ μ μ§ν©μΌλ‘ μ μν μλ μλ€. μ¬λ°λ₯΄κ² λ°μλ λ°μ΄ν°λ₯Ό λ°μ΄ν°λ² μ΄μ€μ λ°μμν€λ κ²μ 컀λ°(COMMIT), νΈλμμ μμ μ΄μ μ μνλ‘ λλ리λ κ²μ λ‘€λ°±(ROLLBACK)μ΄λΌκ³ νλ©°, μ μ₯μ (SAVEPOINT) κΈ°λ₯κ³Ό ν¨κ» 3κ°μ§ λͺ λ Ήμ΄λ₯Ό νΈλμμ μ μ½νΈλ‘€νλ TCL(TRANSACTION CONTROL LANGUAGE)λ‘ λΆλ₯νλ€. νΈλμμ μ λμμ΄ λλ SQLλ¬Έμ UPDATE, INSERT, DELETE λ± λ°μ΄ν°λ₯Ό μμ νλ DML λ¬Έμ΄λ€. SELECT λ¬Έμ₯μ μ§μ μ μΈ νΈλμμ μ λμμ΄ μλμ§λ§, SELECT FOR UPDATE λ± λ°°νμ LOCKμ μꡬνλ SELECT λ¬Έμ₯μ νΈλμμ μ λμμ΄ λ μ μλ€. νΈλμμ μ νΉμ±μ μ΄ν΄λ³΄λ©΄ [ν β ‘-1-14]μ κ°λ€.
κ³μ’μ΄μ²΄λ ν κ³μ’μμ νκΈμ΄ μΈμΆλ νμ λ€λ₯Έ κ³μ’λ‘ μ κΈμ΄ λλλ°. νκΈμ΄ μΈμΆλκΈ° μ μ λ€λ₯Έ κ³μ’μ μ κΈμ΄ λλ κ²μ λ¬Έμ λ₯Ό λ°μμν¬ μ μλ€. κ·Έλ¦¬κ³ μ΄μ²΄κ° κ²°μ λκΈ° μ κΉμ§λ λ€λ₯Έ μ¬λμ΄ μ΄ κ³μ’μ μ 보λ₯Ό λ³κ²½ν μ μλ€. μ΄κ²μ λ³΄ν΅ λ¬Έμ μλ¬Όμ λ₯Ό μ±μ°λ―μ΄ νλ€κ³ νμ¬ μ κΈ(LOCKING)μ΄λΌκ³ νννλ€. νΈλμμ μ νΉμ±(νΉν μμμ±)μ μΆ©μ‘±νκΈ° μν΄ λ°μ΄ν°λ² μ΄μ€λ λ€μν λ 벨μ μ κΈ κΈ°λ₯μ μ 곡νκ³ μλλ°, μ κΈμ κΈ°λ³Έμ μΌλ‘ νΈλμμ μ΄ μννλ λμ νΉμ λ°μ΄ν°μ λν΄μ λ€λ₯Έ νΈλμμ μ΄ λμμ μ κ·Όνμ§ λͺ»νλλ‘ μ ννλ κΈ°λ²μ΄λ€. μ κΈμ΄ κ±Έλ¦° λ°μ΄ν°λ μ κΈμ μ€νν νΈλμμ λ§ λ μ μ μΌλ‘ μ κ·Όν μ μκ³ λ€λ₯Έ νΈλμμ μΌλ‘λΆν° κ°μμ΄λ λ°©ν΄λ₯Ό λ°μ§ μλ κ²μ΄ 보μ₯λλ€. κ·Έλ¦¬κ³ μ κΈμ΄ κ±Έλ¦° λ°μ΄ν°λ μ κΈμ μνν νΈλμμ λ§μ΄ ν΄μ ν μ μλ€.
μ λ ₯ν μλ£λ μμ ν μλ£μ λν΄μ λλ μμ ν μλ£μ λν΄μ μ ν λ¬Έμ κ° μλ€κ³ νλ¨λμμ κ²½μ° COMMIT λͺ λ Ήμ΄λ₯Ό ν΅ν΄μ νΈλμμ μ μλ£ν μ μλ€. COMMITμ΄λ ROLLBACK μ΄μ μ λ°μ΄ν° μνλ λ€μκ³Ό κ°λ€.
λ¨μ§ λ©λͺ¨λ¦¬ BUFFERμλ§ μν₯μ λ°μκΈ° λλ¬Έμ λ°μ΄ν°μ λ³κ²½ μ΄μ μνλ‘ λ³΅κ΅¬ κ°λ₯νλ€.
νμ¬ μ¬μ©μλ SELECT λ¬Έμ₯μΌλ‘ κ²°κ³Όλ₯Ό νμΈ κ°λ₯νλ€.
λ€λ₯Έ μ¬μ©μλ νμ¬ μ¬μ©μκ° μνν λͺ λ Ήμ κ²°κ³Όλ₯Ό λ³Ό μ μλ€.
λ³κ²½λ νμ μ κΈ(LOCKING)μ΄ μ€μ λμ΄μ λ€λ₯Έ μ¬μ©μκ° λ³κ²½ν μ μλ€.
[μμ ] PLAYER ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ λ ₯νκ³ COMMITμ μ€ννλ€.
[μμ ] Oracle
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
COMMIT; 컀λ°μ΄ μλ£λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ COMMITμ μ€ννλ€.
[μμ ] Oracle
480κ°μ νμ΄ μμ λμλ€.
COMMIT; 컀λ°μ΄ μλ£λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ COMMITμ μ€ννλ€.
[μμ ] Oracle
480κ°μ νμ΄ μμ λμλ€.
COMMIT; 컀λ°μ΄ μλ£λμλ€.
COMMIT λͺ λ Ήμ΄λ μ΄μ²λΌ INSERT λ¬Έμ₯, UPDATE λ¬Έμ₯, DELETE λ¬Έμ₯μ μ¬μ©ν νμ μ΄λ° λ³κ²½ μμ μ΄ μλ£λμμμ λ°μ΄ν°λ² μ΄μ€μ μλ € μ£ΌκΈ° μν΄ μ¬μ©νλ€. COMMIT μ΄νμ λ°μ΄ν° μνλ λ€μκ³Ό κ°λ€.
λ°μ΄ν°μ λν λ³κ²½ μ¬νμ΄ λ°μ΄ν°λ² μ΄μ€μ λ°μλλ€.
μ΄μ λ°μ΄ν°λ μμν μμ΄λ²λ¦¬κ² λλ€.
λͺ¨λ μ¬μ©μλ κ²°κ³Όλ₯Ό λ³Ό μ μλ€.
κ΄λ ¨λ νμ λν μ κΈ(LOCKING)μ΄ νλ¦¬κ³ , λ€λ₯Έ μ¬μ©μλ€μ΄ νμ μ‘°μν μ μκ² λλ€.
SQL Serverμ COMMIT
Oracleμ DMLμ μ€ννλ κ²½μ° DBMSκ° νΈλμμ μ λ΄λΆμ μΌλ‘ μ€ννλ©° DML λ¬Έμ₯ μν ν μ¬μ©μκ° μμλ‘ COMMIT νΉμ ROLLBACKμ μνν΄ μ£Όμ΄μΌ νΈλμμ μ΄ μ’ λ£λλ€. (μΌλΆ ν΄μμλ AUTO COMMITμ μ΅μ μΌλ‘ μ νν μ μλ€.) νμ§λ§, SQL Serverλ κΈ°λ³Έμ μΌλ‘ AUTO COMMIT λͺ¨λμ΄κΈ° λλ¬Έμ DML μν ν μ¬μ©μκ° COMMITμ΄λ ROLLBACKμ μ²λ¦¬ν νμκ° μλ€. DML κ΅¬λ¬Έμ΄ μ±κ³΅μ΄λ©΄ μλμΌλ‘ COMMITμ΄ λκ³ μ€λ₯κ° λ°μν κ²½μ° μλμΌλ‘ ROLLBACK μ²λ¦¬λλ€. μμ μμ λ₯Ό SQL Serverμ©μΌλ‘ λ³κ²½νλ©΄ μλμ κ°λ€.
[μμ ] PLAYER ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ λ ₯νλ€.
[μμ ] SQL Server
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νλ€.
[μμ ] SQL Server
480κ°μ νμ΄ μμ λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νλ€.
[μμ ] SQL Server
480κ°μ νμ΄ μμ λμλ€.
SQL Serverμμμ νΈλμμ μ κΈ°λ³Έμ μΌλ‘ 3κ°μ§ λ°©μμΌλ‘ μ΄λ£¨μ΄μ§λ€.
1) AUTO COMMIT
SQL Serverμ κΈ°λ³Έ λ°©μμ΄λ©°, DML, DDLμ μνν λλ§λ€ DBMSκ° νΈλμμ μ 컨νΈλ‘€νλ λ°©μμ΄λ€. λͺ λ Ήμ΄κ° μ±κ³΅μ μΌλ‘ μνλλ©΄ μλμΌλ‘ COMMITμ μννκ³ μ€λ₯κ° λ°μνλ©΄ μλμΌλ‘ ROLLBACKμ μννλ€.
2) μμμ νΈλμμ
Oracleκ³Ό κ°μ λ°©μμΌλ‘ μ²λ¦¬λλ€. μ¦ νΈλμμ μ μμμ DBMSκ° μ²λ¦¬νκ³ νΈλμμ μ λμ μ¬μ©μκ° λͺ μμ μΌλ‘ COMMIT λλ ROLLBACKμΌλ‘ μ²λ¦¬νλ€. μΈμ€ν΄μ€ λ¨μ λλ μΈμ λ¨μλ‘ μ€μ ν μ μλ€. μΈμ€ν΄μ€ λ¨μλ‘ μ€μ νλ €λ©΄ μλ² μμ± μ°½μ μ°κ²°νλ©΄μμ κΈ°λ³Έμ°κ²° μ΅μ μ€ μμμ νΈλμμ μ 체ν¬λ₯Ό ν΄μ£Όλ©΄ λλ€. μΈμ λ¨μλ‘ μ€μ νκΈ° μν΄μλ μΈμ μ΅μ μ€ SET IMPLICIT TRANSACTION ONμ μ¬μ©νλ©΄ λλ€.
3) λͺ μμ νΈλμμ
νΈλμμ μ μμκ³Ό λμ λͺ¨λ μ¬μ©μκ° λͺ μμ μΌλ‘ μ§μ νλ λ°©μμ΄λ€. BEGIN TRANSACTION (BEGIN TRAN ꡬ문λ κ°λ₯)μΌλ‘ νΈλμμ μ μμνκ³ COMMIT TRANSACTION(TRANSACTIONμ μλ΅ κ°λ₯) λλ ROLLBACK TRANSACTION(TRANSACTIONμ μλ΅ κ°λ₯)μΌλ‘ νΈλμμ μ μ’ λ£νλ€. ROLLBACK ꡬ문μ λ§λλ©΄ μ΅μ΄μ BEGIN TRANSACTION μμ κΉμ§ λͺ¨λ ROLLBACKμ΄ μνλλ€.
ν μ΄λΈ λ΄ μ λ ₯ν λ°μ΄ν°λ, μμ ν λ°μ΄ν°, μμ ν λ°μ΄ν°μ λνμ¬ COMMIT μ΄μ μλ λ³κ²½ μ¬νμ μ·¨μν μ μλλ° λ°μ΄ν°λ² μ΄μ€μμλ λ‘€λ°±(ROLLBACK) κΈ°λ₯μ μ¬μ©νλ€. λ‘€λ°±(ROLLBACK)μ λ°μ΄ν° λ³κ²½ μ¬νμ΄ μ·¨μλμ΄ λ°μ΄ν°μ μ΄μ μνλ‘ λ³΅κ΅¬λλ©°, κ΄λ ¨λ νμ λν μ κΈ(LOCKING)μ΄ νλ¦¬κ³ λ€λ₯Έ μ¬μ©μλ€μ΄ λ°μ΄ν° λ³κ²½μ ν μ μκ² λλ€.
[μμ ] PLAYER ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ λ ₯νκ³ ROLLBACKμ μ€ννλ€.
[μμ ] Oracle
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ ROLLBACKμ μ€ννλ€.
[μμ ] Oracle
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ ROLLBACKμ μ€ννλ€.
[μμ ] Oracle
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
SQL Serverμ ROLLBACK
SQL Serverλ μμμ μΈκΈν λ°μ κ°μ΄ AUTO COMMITμ΄ κΈ°λ³Έ λ°©μμ΄λ―λ‘ μμμ μΌλ‘ ROLLBACKμ μννλ €λ©΄ λͺ μμ μΌλ‘ νΈλμμ μ μ μΈν΄μΌ νλ€. μμ μμ λ μλμ κ°μ΄ λ³κ²½λλ€.
[μμ ] PLAYER ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ λ ₯νκ³ ROLLBACKμ μ€ννλ€.
[μμ ] SQL Server
BEGIN TRAN
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ ROLLBACKμ μ€ννλ€.
[μμ ] SQL Server
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ νκ³ ROLLBACKμ μ€ννλ€.
[μμ ] SQL Server
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
ROLLBACK νμ λ°μ΄ν° μνλ λ€μκ³Ό κ°λ€.
λ°μ΄ν°μ λν λ³κ²½ μ¬νμ μ·¨μλλ€.
μ΄μ λ°μ΄ν°λ λ€μ μ¬μ μ₯λλ€.
κ΄λ ¨λ νμ λν μ κΈ(LOCKING)μ΄ νλ¦¬κ³ , λ€λ₯Έ μ¬μ©μλ€μ΄ νμ μ‘°μν μ μκ² λλ€.
COMMITκ³Ό ROLLBACKμ μ¬μ©ν¨μΌλ‘μ¨ λ€μκ³Ό κ°μ ν¨κ³Όλ₯Ό λ³Ό μ μλ€.
λ°μ΄ν° λ¬΄κ²°μ± λ³΄μ₯
μꡬμ μΈ λ³κ²½μ νκΈ° μ μ λ°μ΄ν°μ λ³κ²½ μ¬ν νμΈ κ°λ₯
λ Όλ¦¬μ μΌλ‘ μ°κ΄λ μμ μ κ·Έλ£Ήννμ¬ μ²λ¦¬ κ°λ₯
μ μ₯μ (SAVEPOINT)μ μ μνλ©΄ λ‘€λ°±(ROLLBACK)ν λ νΈλμμ μ ν¬ν¨λ μ 체 μμ μ λ‘€λ°±νλ κ²μ΄ μλλΌ ν μμ μμ SAVEPOINTκΉμ§ νΈλμμ μ μΌλΆλ§ λ‘€λ°±ν μ μλ€. λ°λΌμ 볡μ‘ν λκ·λͺ¨ νΈλμμ μμ μλ¬κ° λ°μνμ λ SAVEPOINTκΉμ§μ νΈλμμ λ§ λ‘€λ°±νκ³ μ€ν¨ν λΆλΆμ λν΄μλ§ λ€μ μ€νν μ μλ€. (μΌλΆ ν΄μμλ μ§μμ΄ μ λ μ μμ) 볡μμ μ μ₯μ μ μ μν μ μμΌλ©°, λμΌμ΄λ¦μΌλ‘ μ μ₯μ μ μ μνμ λλ λμ€μ μ μν μ μ₯μ μ΄ μ ν¨νλ€. λ€μμ SQLλ¬Έμ SVPT1μ΄λΌλ μ μ₯μ μ μ μνκ³ μλ€.
[Oracle]
μ μ₯μ κΉμ§ λ‘€λ°±ν λλ ROLLBACK λ€μ μ μ₯μ λͺ μ μ§μ νλ€.
[Oracle]
μμ κ°μ΄ λ‘€λ°±(ROLLBACK)μ SAVEPOINT λͺ μ λΆμ¬νμ¬ μ€ννλ©΄ μ μ₯μ μ€μ μ΄νμ μμλ λ°μ΄ν° λ³κ²½μ λν΄μλ§ μλ λ°μ΄ν° μνλ‘ λλμκ°κ² λλ€. SQL Serverλ SAVE TRANSACTIONμ μ¬μ©νμ¬ λμΌν κΈ°λ₯μ μνν μ μλ€. λ€μμ SQLλ¬Έμ SVTR1μ΄λΌλ μ μ₯μ μ μ μνκ³ μλ€.
[SQL Server]
μ μ₯μ κΉμ§ λ‘€λ°±ν λλ ROLLBACK λ€μ μ μ₯μ λͺ μ μ§μ νλ€.
[SQL Server]
[μμ ] SAVEPOINTλ₯Ό μ§μ νκ³ , PLAYER ν μ΄λΈμ λ°μ΄ν°λ₯Ό μ λ ₯ν λ€μ λ‘€λ°±(ROLLBACK)μ μ΄μ μ μ€μ ν μ μ₯μ κΉμ§ μ€ννλ€.
[μμ ] Oracle
μ μ₯μ μ΄ μμ±λμλ€.
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] SQL Server
μ μ₯μ μ΄ μμ±λμλ€.
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] λ¨Όμ SAVEPOINTλ₯Ό μ§μ νκ³ PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ ν λ€μ λ‘€λ°±(ROLLBACK)μ μ΄μ μ μ€μ ν μ μ₯μ κΉμ§ μ€ννλ€.
[μμ ] Oracle
μ μ₯μ μ΄ μμ±λμλ€.
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] SQL Server
μ μ₯μ μ΄ μμ±λμλ€.
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] SAVEPOINTλ₯Ό μ§μ νκ³ , PLAYER ν μ΄λΈμ μλ λ°μ΄ν°λ₯Ό μμ ν λ€μ λ‘€λ°±(ROLLBACK)μ μ΄μ μ μ€μ ν μ μ₯μ κΉμ§ μ€ννλ€.
[μμ ] Oracle
μ μ₯μ μ΄ μμ±λμλ€.
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[μμ ] SQL Server
μ μ₯μ μ΄ μμ±λμλ€.
480κ°μ νμ΄ μμ λμλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
[κ·Έλ¦Ό β ‘-1-11]μμ 보λ―μ΄ μ μ₯μ Aλ‘ λλλ¦¬κ³ λμ λ€μ Bμ κ°μ΄ λ―Έλ λ°©ν₯μΌλ‘ λλ릴 μλ μλ€. μΌλ¨ νΉμ μ μ₯μ κΉμ§ λ‘€λ°±νλ©΄ κ·Έ μ μ₯μ μ΄νμ μ€μ ν μ μ₯μ μ΄ λ¬΄ν¨κ° λκΈ° λλ¬Έμ΄λ€. μ¦ 'ROLLBACK TO A'λ₯Ό μ€νν μμ μμ μ μ₯μ A μ΄νμ μ μν μ μ₯μ Bλ μ‘΄μ¬νμ§ μλλ€. μ μ₯μ μ§μ μμ΄ "ROLLBACK"μ μ€ννμ κ²½μ° λ°μμλ λͺ¨λ λ³κ²½ μ¬νμ μ·¨μνκ³ νΈλμμ μμ μμΉλ‘ λλμκ°λ€.
[μμ ] μλ‘μ΄ νΈλμμ μ μμνκΈ° μ μ PLAYER ν μ΄λΈμ λ°μ΄ν° 건μμ λͺΈλ¬΄κ²κ° 100μΈ μ μμ λ°μ΄ν° 건μλ₯Ό νμΈνλ€. β» λͺΈλ¬΄κ²λ₯Ό νμΈν μ μλ WHERE μ 쑰건과 λ°μ΄ν° 건μλ₯Ό μ§κ³νκΈ° μν COUNT ν¨μλ 1μ₯ 5μ κ³Ό 6μ μμ μ€λͺ νλ€.
[μμ λ° μ€ν κ²°κ³Ό Oracle]
480
1 κ°μ νμ΄ μ νλμμ΅λλ€.
0
1 κ°μ νμ΄ μ νλμμ΅λλ€.
[μμ ] [κ·Έλ¦Ό β ‘-1-11]μ νμΈνκΈ° μν΄ μλ‘μ΄ νΈλμμ μ μμνκ³ SAVEPOINT Aμ SAVEPOINT Bλ₯Ό μ§μ νλ€. (ν΄μ AUTO COMMIT μ΅μ μ΄ μ μ©λμ΄ μλ κ²½μ° ν΄μ ν¨)
[μμ λ° μ€ν κ²°κ³Ό Oracle]
μλ‘μ΄ νΈλμμ μμ
1κ°μ νμ΄ λ§λ€μ΄μ‘λ€.
μ μ₯μ μ΄ μμ±λμλ€.
481κ°μ νμ΄ μμ λμλ€.
μ μ₯μ μ΄ μμ±λμλ€.
481κ°μ νμ΄ μμ λμλ€.
νμ¬ μμΉμμ [μμ ] CASE 1,2,3μ μμλλ‘ μνν΄λ³Έλ€.
[μμ ] CASE1. SAVEPOINT B μ μ₯μ κΉμ§ λ‘€λ°±(ROLLBACK)μ μννκ³ λ‘€λ°± μ ν λ°μ΄ν°λ₯Ό νμΈν΄λ³Έλ€.
[μμ λ° μ€ν κ²°κ³Ό Oracle]
0
1 κ°μ νμ΄ μ νλμμ΅λλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
481
1 κ°μ νμ΄ μ νλμμ΅λλ€.
[μμ ] CASE2. SAVEPOINT A μ μ₯μ κΉμ§ λ‘€λ°±(ROLLBACK)μ μννκ³ λ‘€λ°± μ ν λ°μ΄ν°λ₯Ό νμΈν΄λ³Έλ€.
[μμ λ° μ€ν κ²°κ³Ό Oracle]
481
1 κ°μ νμ΄ μ νλμμ΅λλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
0
1 κ°μ νμ΄ μ νλμμ΅λλ€.
[μμ ] CASE3. νΈλμμ μ΅μ΄ μμ κΉμ§ λ‘€λ°±(ROLLBACK)μ μννκ³ λ‘€λ°± μ ν λ°μ΄ν°λ₯Ό νμΈν΄λ³Έλ€.
[μμ λ° μ€ν κ²°κ³Ό Oracle]
481
1 κ°μ νμ΄ μ νλμμ΅λλ€.
λ‘€λ°±μ΄ μλ£λμλ€.
480
1 κ°μ νμ΄ μ νλμμ΅λλ€.
μμ λ°°μ΄ νΈλμμ μ λν΄μ λ€μ ν λ² μ 리νλ€.
ν΄λΉ ν μ΄λΈμ λ°μ΄ν°μ λ³κ²½μ λ°μμν€λ μ λ ₯(INSERT), μμ (UPDATE), μμ (DELETE) μνμ κ·Έ λ³κ²½λλ λ°μ΄ν°μ 무결μ±μ 보μ₯νλ κ²μ΄ 컀λ°(COMMIT)κ³Ό λ‘€λ°±(ROLLBACK)μ λͺ©μ μ΄λ€. 컀λ°μ 'λ³κ²½λ λ°μ΄ν°λ₯Ό ν μ΄λΈμ΄ μꡬμ μΌλ‘ λ°μν΄λΌ'λΌλ μλ―Έλ₯Ό κ°λ κ²μ΄κ³ , λ‘€λ°±(ROLLBACK)μ 'λ³κ²½λ λ°μ΄ν°κ° λ¬Έμ κ° μμΌλ λ³κ²½ μ¬νμ μ·¨μνκ³ λ³κ²½ μ΄μ μ λ°μ΄ν°λ‘ 볡ꡬνλΌ'λ μλ―Έμ΄λ€. μ μ₯μ (SAVEPOINT/SAVE TRANSACTION)μ "λ°μ΄ν° λ³κ²½μ μ¬μ μ μ§μ ν μ μ₯μ κΉμ§λ§ λ‘€λ°±νλΌ"λ μλ―Έμ΄λ€. Oracleμ νΈλμμ μ νΈλμμ μ λμμ΄ λλ SQL λ¬Έμ₯μ μ€ννλ©΄ μλμΌλ‘ μμλκ³ , COMMIT λλ ROLLBACKμ μ€νν μμ μμ μ’ λ£λλ€. λ¨, λ€μμ κ²½μ°μλ COMMITκ³Ό ROLLBACKμ μ€ννμ§ μμλ μλμΌλ‘ νΈλμμ μ΄ μ’ λ£λλ€.
CREATE, ALTER, DROP, RENAME, TRUNCATE TABLE λ± DDL λ¬Έμ₯μ μ€ννλ©΄ κ·Έ μ ν μμ μ μλμΌλ‘ 컀λ°λλ€.
λΆμ°νλ©΄, DML λ¬Έμ₯ μ΄νμ μ»€λ° μμ΄ DDL λ¬Έμ₯μ΄ μ€νλλ©΄ DDL μν μ μ μλμΌλ‘ 컀λ°λλ€.
λ°μ΄ν°λ² μ΄μ€λ₯Ό μ μμ μΌλ‘ μ μμ μ’ λ£νλ©΄ μλμΌλ‘ νΈλμμ μ΄ μ»€λ°λλ€.
μ ν리μΌμ΄μ μ μ΄μ μ’ λ£λ‘ λ°μ΄ν°λ² μ΄μ€μμ μ μμ΄ λ¨μ λμμ λλ νΈλμμ μ΄ μλμΌλ‘ λ‘€λ°±λλ€.
SQL Serverμ νΈλμμ μ DBMSκ° νΈλμμ μ 컨νΈλ‘€νλ λ°©μμΈ AUTO COMMITμ΄ κΈ°λ³Έ λ°©μμ΄λ€. λ€μμ κ²½μ°λ Oracleκ³Ό κ°μ΄ μλμΌλ‘ νΈλμμ μ΄ μ’ λ£λλ€.
μ ν리μΌμ΄μ μ μ΄μ μ’ λ£λ‘ λ°μ΄ν°λ² μ΄μ€(μΈμ€ν΄μ€)μμ μ μμ΄ λ¨μ λμμ λλ νΈλμμ μ΄ μλμΌλ‘ λ‘€λ°±λλ€.
μΆμ² : λ°μ΄ν°μ¨μμ΄ β νκ΅λ°μ΄ν°μ°μ μ§ν₯μ()