oracle - 커밋해야 할 스테이트먼트는 무엇입니까?
잠금을 피하기 위해 테이블에서 추가 작업을 수행하기 전에 커밋해야 할 스테이트먼트 목록은 무엇입니까?나는 복수의 스테이트먼트와 트랜잭션의 무결성을 가지는 완전한 트랜잭션을 말하는 것이 아니라, 단일 스테이트먼트를 말하는 것입니다.
삽입을 커밋해야 하지만 잘라내기에는 자동 커밋이 있습니다.커밋할 필요가 있는 스테이트먼트의 전체 리스트는 무엇입니까?
커밋 필요(스타리스트):
UPDATE
INSERT
DELETE
DML(데이터 조작 언어) 명령을 커밋/롤백해야 합니다.다음은 이러한 명령어 목록입니다.
Data Manipulation Language(DML; 데이터 조작 언어) 문은 스키마 개체 내의 데이터를 관리하는 데 사용됩니다.몇 가지 예:
INSERT - insert data into a table
UPDATE - updates existing data within a table
DELETE - deletes records from a table, the space for the records remain
MERGE - UPSERT operation (insert or update)
CALL - call a PL/SQL or Java subprogram
EXPLAIN PLAN - explain access path to data
LOCK TABLE - control concurrency
기계적인 용어로 COMMIT는 트랜잭션을 수행합니다.즉, 트랜잭션은 2개의 COMMIT 스테이트먼트(또는 롤백) 사이에 발생하는 모든 액티비티(1개 이상의 DML 스테이트먼트)입니다.
Oracle에서 DDL 문은 단순히 명령어가 실행되기 전에 암묵적인 COMMIT가 발행되고 그 후에 다시 발행되기 때문에 그 자체로 트랜잭션입니다.TRUNCATE는 DDL 명령어이므로 호출 시 암묵적인 커밋이 실행되므로 명시적인 커밋은 필요하지 않습니다.
시스템 설계의 관점에서 트랜잭션은 업무 단위입니다.1개의 DML 문 또는 그 중 몇 개로 구성될 수 있습니다.상관없습니다.완전한 거래만이 커밋을 필요로 합니다.커밋을 발행하는 것은 말 그대로 비즈니스 유닛 전체의 작업을 완료하지 않는 한 또는 완료할 때까지 의미가 없습니다.
이게 핵심 콘셉트예요.COMMIT를 사용하다Oracle에서는 관심 트랜잭션 목록과 같은 래치도 릴리스합니다.오라클로 하다ORA-01555: SNAPSHOT TOO OLD
★★★★★★★★★★★★★★★★★」ORA-01002: FETCH OUT OF SEQUENCE
이치노따라서, 우리의 거래는 그들이 필요로 하는 만큼 잠그는 것이 매우 중요합니다.
DML은 커밋 또는 롤백해야 합니다.DDL은 할 수 없습니다.
http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands
자동 커밋을 켤 수 있습니다.이것은 DML에 대해서만 가능합니다.DDL은 트랜잭션의 일부가 아니기 때문에 명시적인 커밋/롤백과 같은 것은 없습니다.
truncate
는 DDL이므로 암묵적으로 커밋됩니다.
편집
미안하다고 해야겠다.코멘트에 기재되어 있는 @DCookie나 @APC와 같이 DDL에 대한 암묵적인 커밋과 같은 것이 존재합니다.Ask Tom에 대한 질문은 여기를 참조하십시오.이것은 내가 배운 것과 대조적이며 나는 아직도 조금 궁금하다.
요점은 TRUNCATE TABLE은 WHERE 절이 없는 DELETE처럼 보이지만 TRUNCATE는 DML이 아니라 DDL입니다.DELETE는 커밋을 필요로 하지만 TRUNCATE는 그렇지 않습니다.
언급URL : https://stackoverflow.com/questions/9541013/oracle-what-statements-need-to-be-committed
'it-source' 카테고리의 다른 글
my sql 쿼리를 사용하여 woocommerce에서 완료된 주문을 삭제하는 방법 (0) | 2023.03.07 |
---|---|
웹 앱이 Angular(또는 다른 기술)를 사용하여 구축되었는지 어떻게 알 수 있습니까? (0) | 2023.03.07 |
스프링 부트 Java Config Set 세션타임아웃 (0) | 2023.03.07 |
React.js에서 이미지를 프리로드하는 방법 (0) | 2023.03.07 |
Spring Boot application.yml 파일에서 @Scheduled fixedRate 값을 삽입합니다. (0) | 2023.03.07 |