DATABASE(oracleDB 11g)/SQL

[SQL]TCL(트랜잭션 관리) 기초

SEUNGSAMI 2019. 2. 1. 10:44

TCL(트랜잭션 관리) 기초



트랜잭션은 간단하게 일 하나의 단위를 말한다.

또한 가장 큰 특징으로는 All-Or-Noting방식으로 처리되는데 All-Or-Nothing은 여러 개의 명령이 모두 정상적으로 처리되면 정상 종료 하고, 하나라도 비정상적으로 처리되면 모두를 취소하는 것을 말한다.


commit

commit;

의 형식으로 쓴다

commit은 저장되지 않은 모든 DB를 저장하고, 현재의 트랜잭션을 종료하는 것을 말하며,데이터를 처리하는 DML을 한 후에 사용된다.

(create alter drop은 자동으로 commit이 발생)

1
commit;
cs


rollback

저장되지 않은 데이터를 모두 취소한다음 트랜잭션을 종료하는 것을 말한다.

아래에 나오는 savepoint를 이용한다면, 내가 지정한 savepoint로 돌아갈 수 있다.

1
rollback;
cs


savepoint

savepoint 이름;

의 형식으로 쓴다

savepoint는 현재까지의 트랜잭션을 특정 이름으로 지정하는 것을 말한다.

주의할 점으로는 commit을 할경우 지금까지 저장한 savepoint가 전부 삭제된다.

1
savepoint test;
cs


이후에 내가 원하는 savepoint로 이동하려면

rollback {to savepoint이름};

의 형식으로 사용하며,

주의할 점으로는 뒤로는 갈수있지만, 다시 앞로 갈 수는 없다.

1
rollback to test;
cs




주의할 점으로는 

- DDL, DCL은 AUTO COMMIT이 실행되기 때문에 같이 쓰지 않도록 한다.

- 현재 유저의 SELECT 문을 사용하여 DML작업의 결과를 확인할수 있지만, 다른유저는 현재 유저가 실행한 DML문의 결과를 확인할 수 없다.

- 영향을 받는 행은 LOCK되므로 다른 유저가 행의 데이터를 변경 할 수 없다.



SQL을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.