Data Base/Oracle SQL

231024 Oracle SQL SAVEPOINT

잇꼬 2023. 10. 24. 18:18
728x90
반응형
SMALL

■ SAVEPOINT
    A. DML 작업시 ROLLBACK 을 도와주는 표시자 
    B. SAVEPOINT 표시자; '표시자' 이름만 중복되지 않게 주의할 것
    C. ROLLBACK TO 표시자;

 

# DATA DML 작업 및Transaction 

     - ROLLBACK 전체취소. Transaction 시작시점까지 전부 취소

INSERT INTO employees (employee_id, last_name, department_id) VALUES (9999, ‘Smith’, 10);
DELETE employees WHERE employee_id = 100;
UPDATE employees SET last_name = ‘Clark’;
INSERT INTO employees (employee_id, last_name, department_id) VALUES (8888, ‘Thomas’, 30);
DELETE employees WHERE department_id = 20;
ROLLBACK;


# SAVEPOINT 위치에 따라 ROLLBACK 시점이 달라진다.

 

1) 
INSERT INTO employees (employee_id, last_name, department_id) VALUES (9999, ‘Smith’, 10);
2) 
DELETE employees WHERE employee_id = 100;

SAVEPOINT A;
3) 
UPDATE employees SET last_name = ‘Clark’;
4) 
INSERT INTO employees (employee_id, last_name, department_id) VALUES (8888, ‘Thomas’, 30);

SAVEPOINT B;
5) 
DELETE employees WHERE department_id = 20;

ROLLBACK TO B; -- 5번 transaction 취소
COMMIT; -- 1,2번 transaction 영구히 저장

 

1) 
INSERT INTO employees (employee_id, last_name, department_id) VALUES (9999, ‘Smith’, 10);
2) 
DELETE employees WHERE employee_id = 100;

SAVEPOINT A;
3) 
UPDATE employees SET last_name = ‘Clark’;
4) 
INSERT INTO employees (employee_id, last_name, department_id) VALUES (8888, ‘Thomas’, 30);

SAVEPOINT B;
5) 
DELETE employees WHERE department_id = 20;
ROLLBACK TO A; -- 3,4,5 번 transaction 취소
COMMIT; -- 1,2번 transaction 영구히 저장
728x90
반응형
LIST