λ³Έ ν¬μ€ν μ νλ‘κ·Έλλ¨Έμ€ λ―Έλ λ°λΈ μ½μ€λ₯Ό 곡λΆνλ©°
νμ΅μ κΈ°λ‘νκΈ° μν λͺ©μ μΌλ‘ μμ±λ κΈμ λλ€.
νΈλμμ
μ μμμ±
μ μ§ν€λ©° μ€νλμ΄μΌνλ SQLλ¬Έλ€μ
νλμ μμ
μΌλ‘ λ¬Άμ΄ μ²λ¦¬νλ λ°©λ²μ΄λ€.
μμμ±
μ΄λ νΈλμμ
μ μμ ν μ€νμ μν΄ λ§μ‘±ν΄μΌνλ
ACID νΉμ±
μ€ Atomicityμ ν΄λΉνλ€. μμμ±
μ νΈλμμ
κ³Ό κ΄λ ¨λ μΌμ λͺ¨λ μ€νλκ±°λ,
λͺ¨λ μ€νλμ§ μμμΌ νλ κ²μ 보μ₯νλ νΉμ±μ΄λ€.
νΈλμμ
μμλ νΈλμμ
κ³Ό κ΄λ ¨λ SQLλ€μ΄ λ€κ°μ΄ μ±κ³΅ν΄μΌνκ³ , λ€ κ°μ΄ μ€ν¨ν΄μΌνλ€.
SQLλ¬Έ μ€ νλλΌλ μ€ν¨νλ©΄ λ€μ νΈλμμ
μ€ν μ μ μμνλ‘ λμκ°μΌ νλ€.
DML, DDL λͺ
λ Ήμ΄ μ¬μ© λμ€ ν
μ΄λΈμ μμ νκ±°λ λ μ½λλ₯Ό μΆκ°νλ λ±μ ν
μ΄λΈ λ³κ²½μ¬ν
μ΄ μλ κ²½μ° νΈλμμ
μ΄ νμν λκ° μλ€.
κ·Έλ¬λ DML μ€μμλ μ½κΈ°μμ
λ§ νλ selectλ¬Έ
μ μ¬μ©νλ κ²½μ°μλ νΈλμμ
μ μ¬μ©ν μ΄μ κ° μλ€.
μν κ³μ’ μ΄μ²΄λ νΈλμμ μ μ€λͺ νκΈ° μ’μ μμ μ΄λ€.
κ³μ’ μ΄μ²΄λ μΈμΆκ³Ό μ κΈμ λ κ³Όμ μΌλ‘ μ΄λ£¨μ΄μ§λ€.
Aμ Bλ κ±°λνκΈ°λ‘ νλ€.
Aλ λμ μ κΈνκ³
Bλ κ³μ’λ₯Ό 보며 κΈ°λ€λ¦¬κ³ μλ€.
κ·Έλ°λ° μ€λ₯λ‘ μΈν΄
Aμ κ³μ’μμ μΈμΆλ§ μ΄λ€μ§κ³
Bμ κ³μ’λ‘ μ κΈλμ§ μμλ€.
λμ΄ νλ°λ κ²μ΄λ€.
μμ κ°μ μΌμ λ°μμν€μ§ μκΈ° μν΄μ
νΈλμμ
μ μ λΆ μ±κ³΅νκ±°λ, μ λΆ μ€ν¨ν΄μΌ νλ€.
νΈλμμ
μ μ¬μ©νλ €λ©΄
SQLλ¬Έμ BEGIN
κ³Ό END(COMMIT)
μΌλ‘ κ°μΌλ€.
μ΄λ κ² νΈλμμ
μ μ¬μ©ν κ²½μ°
END(COMMIT)
μ΄ μ€νλκΈ° μ κΉμ§λ
λ³κ²½λ΄μ©μ΄ DBμ λ°μλμ§ μλλ€.
νλμ νΈλμμ
μ COMMIT
κ³Ό ROLLBACK
μ λ§λλ©΄ λλλ€.
νΈλμμ κΈ°λ³Έ λ¬Έλ²
BEGIN; -- START TRANSACTION
Aμ κ³μ’μμ μΈμΆ
Bμ κ³μ’λ‘ μ
κΈ
END; -- COMMIT
νΈλμμ
μ΄ μ±κ³΅νλ©΄ μ±κ³΅μ μΌλ‘ COMMIT
μ΄ λλ€.
COMMIT
μ κΉμ§λ μμ
λ΄μμ΄ λ μ΄μΈμ λ€λ₯Έ μ¬λλ€μκ² λ³΄μ΄μ§ μλλ€.
λ§μ½ BEGIN
μ μ μνλ‘ λμκ°κ³ μΆλ€λ©΄ ROLLBACK
μ μ€ννλ€.
κ΄κ³ν λ°μ΄ν°λ² μ΄μ€λ λͺ¨λ νΈλμμ
μ μ§μνλ€. κ·Έλ¬λ λμμ
Autocommitλͺ¨λ
μ λ°λΌ λ¬λΌμ§λ€.
Autocommitμ μλμΌλ‘ COMMIT
μ ν΄μ£Όλ λͺ¨λμ΄λ€.
Autocommitμ΄ κ°μ§λ κ°μ booleanκ°μ΄λ©°,
μ΄λ€ MySQL ν΄λΌμ΄μΈνΈλ₯Ό μ¬μ©νλλμ λ°λΌ κΈ°λ³Έκ°μ΄ λ€λ₯΄λ€.
MySQL Workbenchμ κ²½μ°μλ κΈ°λ³Έκ°μ΄ True
κ°μ΄λ€.
autocommit μνλ₯Ό μμ보λ μ½λ
SHOW VARIABLES LIKE 'AUTOCOMMIT';
ON
μ΄λ©΄ Autocommitκ°μ΄ true
μΈ μνμ΄λ€.Off
μ΄λ©΄ Autocommitκ°μ΄ false
μΈ μνμ΄λ€.DDL, νΉμ DML μ¬μ© μ μλμΌλ‘ COMMIT
μ΄ λλ€.
ν
μ΄λΈμ μμ κ³Ό λ³κ²½ μ¬νμ΄ DBμ λ°λ‘ μ μ©λλ€.
μ¦μ λ°μμ νΌνκ³ μΆμ λ νΈλμμ
μ μ¬μ©ν μ μλ€.
νΈλμμ
μ μμν λ
BIGIN
κ³Ό START TRANSACTION
ν€μλλ₯Ό μ¬μ©νκ³ ,
νΈλμμ
μ λλΌ λ
END
μ COMMIT
ν€μλλ₯Ό μ¬μ©νλ€.
λͺ¨λ λ³κ²½μ¬νμ DBμ λ°λ‘ COMMIT
λλ©°,
νΈλμμ
μ νλ μκ°μλ§ μ¦μ λ°μμ΄ λμ§ μλλ€.
autocommit κ°μ μ€μ νλ μ½λ
SET autocommit = 1; -- autocommit = 0μ false
SET autocommit = 1
μ Autocommitκ°μ true
λ‘ μ€μ DDL, νΉμ DML μ¬μ© μ λ³κ²½μ¬νμ΄ μλμΌλ‘ COMMIT
λμ§ μκ³ ,
νμλΈμ μμ κ³Ό λ³κ²½μ¬νμ λͺ
μμ μΌλ‘ COMMIT
μ μ€νν΄μΌ DBμ λ°μλλ€.
λͺ¨λ μ°κΈ°μμ
μ λͺ
μμ μΌλ‘ ROLLBACK
μ΄λ COMMIT
μ ν΄μΌ λ°μλλ€.
COMMIT
μ΄μ μλ λ°μ΄ν°κ° λ³κ²½λ κ²μ²λΌ 보μ¬λ DBμλ λ°μλμ§ μλλ€.
λͺ¨λ κ²μ λͺ
μμ μΌλ‘ COMMIT
ν΄μΌ λ°μλλ ꡬ쑰μ΄κΈ° λλ¬Έμ νΈλμμ
μ΄λΌλ κ°λ
μ΄ μλ€.
λ°λΌμ BIGIN
λ μ¬μ©νμ§ μλλ€.
λ§μΌ μ μνλ‘ λμκ°κ³ μΆλ€λ©΄ ROLLBACK
μ μ¬μ©νλ€.
autocommit κ°μ μ€μ νλ μ½λ
SET autocommit = 1; -- autocommit = 0μ false
SET autocommit = 0
μ Autocommitκ°μ false
λ‘ μ€μ νμ
DELETE FROM ν
μ΄λΈ μ΄λ¦;
μ₯μ
λ¨μ
νμ
TRUNCATE ν
μ΄λΈ μ΄λ¦;
μ₯μ
λ¨μ
WHERE
μ μ§μνμ§ μλλ€. TRANSACTION
μ μ§μνμ§ μλλ€.TRUNCATE
λ₯Ό μ¬μ©νλ©΄ TRUNCATE
λ νΈλμμ
μ μκ΄μμ΄ νΈλμμ
μ μμμ±
μ΄ νμν sqlλ¬Έμ νλμ μμ
μΌλ‘ λ¬Άμ΄μ μ²λ¦¬νλ λ°©λ²μ΄λ€.
λ°λΌμ νΈλμμ
μ λͺ¨λ μ±κ³΅νκ±°λ, λͺ¨λ μ€ν¨ν΄μΌ νλ€.
νΈλμμ
μ΄ μμν λ BEGIN(START TRANSACTION)
μΌλ‘ λ¬Άκ³
νΈλμμ
μ΄ λλ λ END(COMMIT)
μΌλ‘ κ°μΌλ€.
κ·Έλ°λ° TRANSACTION
μ΄λΌλ κ°λ
μ Autocommit true
μΈ μνμμ λ μλ―Έκ° μλ€.
Autocommit false
μΈ μνμμλ λͺ¨λ μ°κΈ°μμ
μ΄ λͺ
μμ μΈ COMMIT νΉμ ROLLBACK
μ ν΄μΌ DBμ λ°μλκΈ° λλ¬Έμ BIGIN
λ μ¬μ©νμ§ μλλ€.
μΆκ°λ‘, ν
μ΄λΈμ μμλ₯Ό μμ νλ ν€μλμΈ TRUNCATE
λ νΈλμμ
μ μ§μνμ§ μκΈ° λλ¬Έμ νΈλμμ
λ΄λΆμμ TRUNCATE
λ₯Ό μ¬μ©νλλΌλ TRUNCATE
λ νΈλμμ
μ κ΄κ³μμ΄ ν
μ΄λΈμ λ΄μ©μ λͺ¨λ μμ νλ€.