Oracle SQL을 사용한 트랜잭션은 어떻게 사용합니까?
Oracle DB가 있는 SQL-Console에서 트랜잭션 블록을 사용하려고 합니다.저는 Postgre에서 트랜스액션 블록을 사용하는 데 익숙합니다.SQL과 같은
BEGIN;
<simple sql statement>
END;
하지만 오라클에서는 이것이 가능하지 않은 것 같습니다.항상 "ORA-00900" 오류가 발생하는데 어떻게 해결해야 할지 모르겠습니다.다음과 같은 SQL 문을 사용하면
<simple sql statement>
COMMIT;
그건 효과가 있다.하지만 거래의 시작을 정의하는 태그가 있지 않습니까?나는 노력했다.
START TRANSACTION;
<simple sql statement>
COMMIT;
하지만 여전히 ORA-00900을 발사합니다.제 운영체제는 윈도우이며, IntelliJ IDEA와 Oracle 11g DB를 사용하고 있습니다.
에서와 같이 SQL 문 하나를 실행하여 암묵적인 트랜잭션 블록을 가질 수 있습니다.
<simple sql statement>
Commit;
익명 블록 또는 PL/SQL 프로시저/함수/패키지의 경우 Postgres에서 볼 수 있는 추가 옵션을 사용할 수 있습니다.
모든 것이 성공하거나 모두 성공해야 하는 문장이 여러 개 있는 경우(원자성 트랜잭션인 경우) 설명서에서 다음을 수행할 수 있습니다.
DECLARE
<variable declaration>
BEGIN
<simple sql statement>
<simple sql statement>
<simple sql statement>
SAVEPOINT do_insert;
<sql insert statement>
EXCEPTION
WHEN DUP_VAL_ON_INDEX THEN
ROLLBACK TO do_insert;
DBMS_OUTPUT.PUT_LINE('Insert has been rolled back');
END;
--and commit outside the transaction
일반적인 읽기 전용 트랜잭션은 첫 번째 수정된 행에서 자동으로 시작됩니다.
트랜잭션을 명시적으로 설정하려면 다음을 사용합니다.
SET TRANSACTION ISOLATION LEVEL READ COMMITTED
그러나 트랜잭션은 이 문이 실행될 때가 아니라 첫 번째 행이 수정될 때 실제로 생성됩니다.
또는
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
이 경우 읽기 일관성은 이 명령을 실행할 때 사용됩니다.READ ONLY
트랜잭션의 읽기 일관성 효과는 동일합니다.
언급URL : https://stackoverflow.com/questions/35178808/how-do-i-use-transaction-with-oracle-sql
'sourcecode' 카테고리의 다른 글
jQuery를 사용하여 선택한 옵션에 추가 데이터 추가 (0) | 2023.08.17 |
---|---|
JDBC를 사용하여 MySQL 세션 변수를 올바르게 설명하는 방법 (0) | 2023.08.17 |
화면 방향 변경 시 사용자 정의 보기의 상태 손실을 방지하는 방법 (0) | 2023.08.17 |
nodejs에서 MariaDB 준비 문 쿼리를 사용하는 방법은 무엇입니까? (0) | 2023.08.17 |
github에 커밋을 푸시할 때 git가 실패함 (0) | 2023.08.17 |