데이터베이스 - 트랜잭션
트랜잭션 트랜잭션은 동시 접속에 의한 사용자 처리 순서. 데이터의 일관성 있는 변경을 수행하도록 한다. 그리고 데이터 삭제, 수정 등과 관련 있는 DML 명령어만 트랜잭션을 구성한다. 이를 공부하기 위해 먼저 두 개의 클라이언트를 사용하여 하나의 데이터베이스를 두 사용자가 공유하고 있는 상황을 만들어주자. 이를 위해서 cmd 창을 두 개를 실행하고 각 각에서 scott으로 접속하자. 먼저 1번 세션에서 dept2라는 테이블을 만든다. 그리고 해당 테이블에 행을 추가한다. 세션 1에서는 다음처럼 행 데이터 하나가 추가되었다. 하지만 세션 2에서는 반영되지 않았다. 만약에 반영되었다면, 어떤 조건에 의해 자동 commit이 된 것이기 때문에 수정 후 바로 해보도록 하자. commit 양쪽 세션을 동기화 시키기 위해서는 commit이라는 명령어를 사용해야한다. 이는 각 데이터베이스가 달라질 때, 이에 대해서 제대로 입력을 한 것인지 다른 세션에게 알려줘야 하기 때문이다. commit을 입력할 경우 제대로 처리가 된 것으로 인정되어 나머지 세션에도 반영된다. 세션 2에서 확인해보자. 제대로 반영되고 있다. rollback 또 데이터를 하나 넣어보겠다. 이번엔 데이터가 잘못 입력된 상황을 가정하겠다. 잘못된 입력에 대해서 데이터베이스가 변경되어서는 안되기 때문에 이를 취소해보도록 하자. 이를 위해서 rollback을 사용한다. 반영이 안된 채 남아있다. 트랜잭션 종료시점 트랜잭션의 종료 시점은 중요하다. 트랜잭션이 진행 중일 경우에는 데이터를 변경 중인 세션과 나머지 세션간의 데이터가 동기화되어 있지 않는데, 트랜잭션 종료와 함께 각 세션이 동기화되기 때문이다. 종료 조건을 살펴보자. commit/ rollback 명령어 실행 테이블 생성과 같은 DDL 명령 실행 DCL 명령어 실행 exit을 사용하거...