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 |
댓글