>데이터 베이스 >Oracle >오라클에 롤백이 있나요?

오라클에 롤백이 있나요?

WBOY
WBOY원래의
2022-06-08 17:10:354242검색

oracle에는 롤백이 있습니다. 롤백은 현재 트랜잭션이나 문제가 있는 트랜잭션을 취소하는 데 사용됩니다. 롤백 방법은 트랜잭션의 롤백을 완료하는 데 사용할 수 있습니다. 구문은 "ROLLBACK [암시적 키워드] [TO [SAVEPOINT] savepoint_name | FORCE '문자열'};".

오라클에 롤백이 있나요?

이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 버전 12c, Dell G3 컴퓨터.

오라클에 롤백이 있나요?

1. 개념

오라클에서 롤백의 사용법은 현재 트랜잭션이나 문제가 있는 트랜잭션을 취소하는 데 사용되는 커밋과 반대입니다.

1.1 구문

ROLLBACK [WORK] [TO [SAVEPOINT] savepoint_name | FORCE 'string'};

예:

  • work - 선택 사항입니다. 암시적 키워드는 작성될 수도 있고 작성되지 않을 수도 있습니다.

  • to savepoint savepoint_name - 선택 사항입니다. 롤백 문은 savepoint_name에 지정된 저장점까지 현재 세션의 모든 변경 사항을 취소합니다. 이 절을 생략하면 모든 변경 사항이 취소됩니다.

  • force '문자열 - 선택사항'. 잠재적으로 손상되었거나 문제가 있는 트랜잭션을 강제로 롤백하는 데 사용됩니다. 이 절을 사용하면 작은따옴표로 묶인 트랜잭션 ID를 문자열로 지정할 수 있습니다. dba_2pc_pengding, v$corrupt_xid_list라는 트랜잭션 식별자는 시스템 뷰에서 확인할 수 있습니다. (문제가 있는 트랜잭션은 저장 지점으로 롤백할 수 없습니다.)

1.1 데이터 준비

DROP TABLE stu; -- if exists
CREATE TABLE stu (
  s_id NUMBER,
  s_xm VARCHAR2(30)
);
ALTER TABLE stu ADD CONSTRAINTS pk_stu_id PRIMARY KEY(s_id);

2. 세이브포인트

롤백 바로가기 가장 가까운 pointsql

DECLARE
   
BEGIN
   INSERT INTO stu(s_id, s_xm) VALUES(1, '小游子');
   SAVEPOINT ps1;
   
   INSERT INTO stu(s_id, s_xm) VALUES(2, '小优子');
   SAVEPOINT ps2; -- 若也是 ps1,则回滚至此处(最近)
   
   INSERT INTO stu(s_id, s_xm) VALUES(2, '小优子');
   
   COMMIT;
EXCEPTION 
  WHEN OTHERS THEN
     ROLLBACK TO ps1;
     dbms_output.put_line(SQLCODE ||' : '||SQLERRM);
     dbms_output.put_line(dbms_utility.format_error_backtrace);
END;

작업 결과:

오라클에 롤백이 있나요?

추천 튜토리얼: "Oracle Video Tutorial"

위 내용은 오라클에 롤백이 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.