바닥코딩

트랜잭션과 TCL(Transaction Control Language) 본문

데이터 베이스/SQL

트랜잭션과 TCL(Transaction Control Language)

개발공부개발공부 2020. 3. 3. 13:46

트랜잭션 ?

랜잭션은 데이터베이스의 논리적 연산 단위다 즉 트랜잭션은 데이터베이스를 조작하는 행위가 포함되기 떄문에 하나 이상의 SQL문이 반드시 포함이 된다 예를 들어 계좌 이체를 예로 들어보면 

   철수의 계좌에서 10000을 출금한다 

   영희의 계좌에 10000원을 입금한다 

   철수가 영희의 계죄에 10000원을 송금한다 

이러한 3가지의 경우가 있다고 생각을 해보자 이것을  SQL 문 관점에서 이를 코드화 해보면 첫번째는 철수의 계좌만을 UPDATE 해여 하고 두번째는 영희의 계좌정보 만을 UPDATE 세번쨰는 두명의 계좌를 동시에 UPDATE 해야한다  세번쨰 경우에서 만약 철수의 계좌 UPDATE만 이루어지거나 영희의 계좌가 UPDATE가 되버린다면 한쪽의 돈이 증발되거나 없던 돈이 생겨버리는 불상사가 발생할 수 있다 그렇기 떄문에 이런 계좌이체 같은 하나의 동작단위를 트랜잭션이라 정의를 하고 관리하여 이런 불상사를 사전에 예방 할 수 있다 

 

트랜잭션의 특성

특성 설명
원자성(Atomicity) 트랜잭션에 정의된 연산은 모두 수행되거나 전혀 실행되지 않아야 한다 
일관성(Consistency) 트랜잭션이 실행되기 전 데이터베이스가 문제가 없었다면 실행 후도 없어야 한다 
고립성(Isolation) 트랜잭션이 실행되는 도중 다른 트랜잭션의 영향을  받으면 안된다 
지속성(Durability) 트랜잭션이 성공적으로 실행이 되면 갱신한 내용은 영구적으로 저장된다 

  

 TCL 문 종류

1.commit = 입력한 자료나 수정한 자료에 대해 문제 없다고 판단한 경우 트랜잭션을 완료 시킨다

1
2
UPDATE PLAYER  SET HEIGHT = 100
COMMIT;

위와 같은 문장을 작성한다고 하면 PLAYER 테이블 HEIGHT 정보를 100으로 세팅하고 이 상태를 완료 한다 

2. Rollback = 입력, 수정, 삭제 한 데이터에 대해 commit을 하기 이전에는 상황을 돌릴 수 있다 

이런 문장을 만든다면 비록 INSERT INTO 문장이 실행되었지만 삽입 연산을 취소한 상태로 롤백이 가능하다

'데이터 베이스 > SQL' 카테고리의 다른 글

Group by , Having 절  (0) 2020.03.03
mysql/mariaDB 덤프 받아 사용하기  (0) 2020.03.03
[tool 소개]heidiSQL  (0) 2020.03.03
[tool 소개]DBeaver  (0) 2020.03.02
INDEX  (0) 2020.01.03