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을 배운지 얼마 되지 않아 잘못된 내용이 있을 수 있습니다. 틀린 내용이있다면, 댓글로 달아주세요.
'DATABASE(oracleDB 11g) > SQL' 카테고리의 다른 글
[SQL]VIEW 의 기초 (0) | 2019.02.01 |
---|---|
[SQL]제약 조건(Constraints) (1) | 2019.02.01 |
[SQL]DML(Data Manupulation Language)의 기초 (0) | 2019.01.31 |
[SQL]DDL(Data Definition Language) 의 기초 (0) | 2019.01.31 |
[SQL]서브쿼리(SUBQUERY)의 기초 (0) | 2019.01.30 |