
커밋은 데이터베이스에 대한 변경 사항을 저장하는 데 사용되는 명령입니다.
사용자가 데이터 추가, 업데이트 또는 삭제와 같이 데이터베이스를 변경하면 해당 변경 사항은 데이터베이스 메모리에 일시적으로만 적용됩니다. 커밋은 이러한 변경 사항을 영구적으로 만들고 데이터베이스 저장소에 기록하는 데 사용됩니다. 반면에 롤백은 데이터베이스에 대한 변경 사항을 실행 취소하는 데 사용되는 명령입니다. 이것은 일반적으로 사용자가 실수를 했다는 것을 깨닫거나 최근 변경 사항을 실행 취소해야 하는 문제가 발생한 경우에 사용됩니다.
롤백은 마지막 커밋 이후의 모든 변경 사항을 취소하고 데이터베이스를 이전 상태로 되돌립니다.
롤백은 아직 커밋되지 않은 변경 사항을 실행 취소하는 데에만 사용할 수 있다는 점은 꼭 기억해야 합니다. 일단 커밋이 수행되면 롤백으로 변경 사항을 취소할 수 없습니다.
다음은 데이터베이스 관리 시스템에서 커밋 및 롤백을 사용하는 방법의 예입니다.
- 사용자가 데이터베이스에 연결하고 새 트랜잭션을 시작합니다.
- 사용자는 새 레코드를 삽입하거나 기존 레코드를 업데이트하는 등 데이터베이스를 변경합니다.
- 변경 사항을 저장하기로 결정하고 커밋 명령을 실행합니다. 이렇게 하면 변경 사항이 영구적으로 유지되고 데이터베이스 저장소에 기록됩니다.
- 나중에 사용자는 자신이 실수했다는 사실을 깨닫고 자신이 변경한 사항을 실행 취소하려고 합니다. 마지막 커밋 이후에 변경된 모든 내용을 취소하고 데이터베이스를 이전 상태로 되돌리는 롤백 명령을 실행합니다.
또 다른 예로, 사용자가 트랜잭션으로 작업 중이고 여러 쿼리/문이 실행되는 경우 사용자가 커밋 문을 발행할 때까지 쿼리/문에 의해 변경된 사항은 영구적이지 않으며 롤백을 사용하여 모든 실행을 취소할 수 있습니다. 다음은 SQL 명령을 사용하는 코드 스니펫의 예입니다.
BEGIN TRANSACTION;
INSERT INTO Employee (Name, Salary) VALUES ('John', 10000);
INSERT INTO Employee (Name, Salary) VALUES ('Mike', 12000);
COMMIT;
위의 예에서 BEGIN TRANSACTION 문은 새 트랜잭션을 시작하고 두 개의 INSERT 문은 Employee 테이블에 새 레코드를 추가합니다. COMMIT 문은 변경 사항을 영구적으로 만듭니다.
BEGIN TRANSACTION;
INSERT INTO Employee (Name, Salary) VALUES ('John', 10000);
INSERT INTO Employee (Name, Salary) VALUES ('Mike', 12000);
ROLLBACK;
이 경우 BEGIN TRANSACTION 문은 새 트랜잭션을 시작하고 두 개의 INSERT 문은 Employee 테이블에 새 레코드를 추가합니다. 그러나 ROLLBACK 문은 INSERT 문에 의해 변경된 내용을 취소하므로 새 레코드가 Employee 테이블에 추가되지 않습니다. 롤백 명령은 동일한 트랜잭션 내에서 변경된 내용을 실행 취소하는 데만 사용할 수 있으며 이미 커밋된 이전 트랜잭션에서 변경된 내용을 실행 취소하는 데 사용할 수 없다는 점은 꼭 기억해야 합니다.
'oracle' 카테고리의 다른 글
오라클 숫자 함수의 종류와 활용 예시 (0) | 2023.01.17 |
---|---|
오라클 연산 함수의 다양한 종류 (0) | 2023.01.14 |
Oracle Case 조건문 사용하기 (0) | 2023.01.12 |
Oracle CONNECT BY 절과 LEVEL 을 이용한 날짜 목록 생성 (0) | 2023.01.11 |
Oracle dual 빈 행과 level을 이용한 날짜 출력하기 (0) | 2023.01.10 |