본문 바로가기
IT/SQL

TRANSACTION CONTROL

by 봉즙 2019. 6. 8.

 

Transaction Control : 여러가지 작업을 하나로 묶은 것.  중간 저장을 통하여 특정위치에서 롤백이 가능하다.

ex) 계좌이체시 출금이나 입금이 실패시 롤백을 하는것, 쓰레드와 유사한 개념

명시적인 제어 명령어

  • COMMIT : 아직 저장되지 않은 모든 데이터 변경 사항을 데이터 베이스에 저장하고 현재의 트랜잭션 종료
  • SAVEPOINT 이름 : 현재의트랜잭션에 savepoint 지정
  • ROLLBACK [TO SAVEPOINT 이름] : 아직 저장되지 않은 모든 데이터 변경 사항을 취소하고 현재의 트랜잭션을 종료

암시적인 트랜잭션 제어 명령어

  • 자동 COMMIT : DDL명령이나 DCL(grant, revoke) 명령 실행, COMMIT나 ROLLBACK을 명시적으로 실행하지 않고 SQL*PLUS를 정상적으로 종료
  • ROLLBAKC : SQL*Plus의 비정상적 종료나 시스템 실패

 

Commit, Rollback 이전의 데이터 상태

- buffer에만 영향을 맏았기에 복구가능하다.

- SELECT문으로 작업결과 확인가능하다.

- 다른 사용자는 현재 사용자가 수행한 작업의 결과를 볼 수 없다.

- 변경된 행은 Lock이 설정되어 다른 사용자가 변경 할 수 없다.

 

Commit이후 데이터 상태

- 변경 사항은 데이터 베이스에 반영된다

-이전 데이터는 영원히 잃어버린다.

-모든사용자는 결과를 볼 수 있다.

-관련된 행에 Lock이 풀리고 다른 사용자들이 행을 조작 할 수 있게 된다.

 

Rollback 이후 데이터 상태

- 데이터에 대한 변경사항은 취소된다.

- 이전 데이터는 다시 재저장된다.

- 관련된 행에 Lock이 풀리고 다른 사용자들이 행을 조작할 수 있다.

 

SAVEPOINT를 이용한 Rollback

- SAVEPOINT 명령어로 현재의 트랜잭션 중에 위치를 지정할 수 있다.

-Rollback to savepoint문을 사용하는 겨웅 savepoint까지 rollback가능

1
2
3
4
5
6
INSERT...
SAVEPOINT in_done;
Savepoint created.
UPDATE...
ROLLBACK TO in_don;
Rollback complete.

 

1
DESC dictionary

 

1
2
SELECT *
FROM dictionary;

 

1
2
3
4
SELECT *
FRom dictionary
WHERE table_name LIKE 'USER%'--대문자입력
 
http://colorscripter.com/info#e" target="_blank" style="color:#4f4f4f; text-decoration:none">Colored by Color Scripter

 

1
2
3
SELECT object_name --사용자가 소유한 모든 테이블 조회
FROM user_objects
WHERE object_type = 'TABLE';--대문자

 

1
2
3
4
SELECT constraint_name, constraint_type,
search_condition, r_constraint_name
FROM user_constraints --S_EMP의 테이블레벨 제한
WHERE table_name = 'S_EMP'--대문자

 

1
2
3
SELECT constraint_name, column_name
FROM user_cons_columns --S_EMP의 컬럼레벨 제한검색
WHERE table_name = 'S_EMP'--대문자

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'IT > SQL' 카테고리의 다른 글

DDL(데이터 정의어)  (0) 2019.06.08
Dictionary  (0) 2019.06.08
Constraint  (0) 2019.06.07
SubQUERY  (0) 2019.06.07
SET연산자  (0) 2019.06.07

댓글