상세 컨텐츠

본문 제목

[SQLD] savepoint

SQL

by Wanderer Kim 2023. 5. 14. 00:15

본문

728x90

sql에서 savepoint는 트랜잭션 내에서 중간 지점을 설정하는데 사용되는 TCL의 일부입니다. 트랜잭션 내에서 문제가 발생했을 때, savepoint를 사용하면 전체 트랜잭션을 롤백하는 대신 해상 지점까지만 롤백할 수 있습니다.

 

다음은 savepoint의 기본적인 사용법입니다.

 

1. savepoint 생성

SAVEPOINT savepoint_name;

이 명령은 트랜잭션 내에서 savepoint_name이라는 이름의 savepoint를 설정합니다.

 

2. savepoint로 롤백

ROLLBACK TO savepoint_name;

이 명령은 트랜잭션을 savepoint_name으로 설정된 savepoint까지 롤백합니다.

savepoint_name 이후의 모든 변경사항은 취소됩니다.

 

3. savepoint 제거

RELEASE SAVEPOINT savepoint_name;

이 명령은 savepoint_name이라는 savepoint를 제거합니다. 해당 savepoint로 롤백할 수 없게 됩니다.

 

다음은 savepoint를 사용한 예제입니다.

START TRANSACTION;

INSERT INTO table_name (column1, column2) VALUES (value1, value2);

SAVEPOINT sp1;

UPDATE table_name SET column1 = new_value WHERE condition;

-- 문제가 발생하면
ROLLBACK TO sp1;

COMMIT;

위 예제에서 만약 update문이 문제를 일으키면, ROLLBACK TO sql; 명령을 사용하여 sql savepoint 이수의 모든 변경사항을 취소할 수 있습니다. 그러나 이전에 수행된 INSERT 문은 롤백되지 않습니다. 마지막으로 COMMIT 명령을 사용하여 트랜잭션에서 수행된 모든 변경사항을 데이터베이에 적용합니다.

 

 

반응형

'SQL' 카테고리의 다른 글

[SQLD] NVL  (0) 2023.05.20
[SQLD] Index  (0) 2023.05.20
[SQLD] TCL query  (0) 2023.05.14
[SQLD] COALESCE 함수  (0) 2023.05.08
[SQLD] to_char 함수  (0) 2023.04.30

관련글 더보기

댓글 영역