source

즉시 실행할 때마다 커밋이 필요합니까?

ittop 2023. 10. 4. 22:59
반응형

즉시 실행할 때마다 커밋이 필요합니까?

하나의 오라클 프로시저 내에 여러 EXECUTE INDEMENT 명령어가 있습니다.

EXECUTE IMMEDIATE 'DELETE  FROM tbl1'; 
EXECUTE IMMEDIATE 'INSERT INTO tbl1...'; 
COMMIT;
EXECUTE IMMEDIATE 'DELETE  FROM tbl3'; 
EXECUTE IMMEDIATE 'INSERT INTO tbl3 ...'; 
COMMIT;
EXECUTE IMMEDIATE 'DELETE  FROM tbl4'; 
EXECUTE IMMEDIATE 'INSERT INTO tbl4 ...';
COMMIT; 

이 모든 COMIT가 필요합니까, 아니면 절차가 끝날 때만 필요합니까?

비즈니스 트랜잭션이 종료될 때를 제외하고 실제로 의무적으로 수행해야 하는 경우는 다음과 같습니다.

  1. DDL을 실행할 때: DDL 실행은 암시적 커밋 쌍으로 감깁니다.
  2. 직접 경로 삽입 후: 삽입을 커밋할 때까지 테이블을 읽을 수 없습니다.

말을 많이 하는 말처럼, 비즈니스 거래가 완료되는 시점이 정확합니다.그렇지 않으면 데이터베이스를 떠난 부분적으로 완료되고 커밋된 트랜잭션이 논리적으로 일관되지 않은 상태임을 탐지하고 수정하기 위해 몇 가지 코드를 직접 작성해야 합니다(예:INVOICE_DETTAIL레코드)가 없는 INVOICE레코드가 존재합니다.

EXECUTE REMINT를 실행할 때마다 커밋이 필요한 것은 아닙니다.일부 문은 커밋을 필요로 하지 않습니다. 예를 들어 테이블을 잘라낼 경우에는 잘라내기가 필요합니다.잘라내기가 완료되었으며 커밋할 필요가 없습니다.롤백도 없습니다.COMIT와 ROLLBACK은 세션 특성임을 알아야 합니다.EXECUCT REMINATE에 의해 실행되는 문장뿐만 아니라 현재 트랜잭션 내의 모든 커밋되지 않은 작업이 커밋되거나 롤백됩니다.

언급URL : https://stackoverflow.com/questions/20433082/is-commit-required-after-every-execute-immediate

반응형