본문 바로가기
study_db

오라클 PRAGMA AUTONOMOUS_TRANSACTION, 자율 트랜잭션 지정하기

by developer_j 2023. 12. 7.
728x90
반응형

오라클 PRAGMA AUTONOMOUS_TRANSACTION, 자율 트랜잭션 지정하기

 

프로시저 내에서 다른 프로시저를 호출하면 같은 트랜잭션에 묶이므로,
독립된 트랜잭션을 가지도록 하고 싶은 경우 사용한다.

PRAGMA 키워드의 AUTONOMOUS_TRANSACTION 옵션을 통해 자율트랜잭션임을 선언해준다.

create or replace FUNCTION  FN_TEST
(
  p_paramSeq in NUMBER
)
AS
 PRAGMA AUTONOMOUS_TRANSACTION;


 


이렇게 해당 프로시저를 자율트랜잭션으로 만들어주면,
부모 트랜잭션의 락(lock),리소스(resource), 커밋(commit)에 관련된 의존성을 가지지 않는다. 즉, 부모의 커밋 / 롤백 여부에 상관 없이 자신의 작업을 커밋 하거나 롤백할 수 있게 된다.

다만 자율 트랜잭션으로 인해 데드락이 발생할 수 있는데, 
자식과 부모 트랜잭션이 별개로 동작하기 때문에 부모와 자식 트랜잭션이 동일한 자원에 대해 서로 점유하려고 하면 데드락이 발생할수 있기 때문에 주의해야한다.

 

 

< 사용 예 >

a 프로시저에서 b 프로시저를 호출하되,
b 프로시저를 통해 insert 한 데이터를 a프로시저 내에서 사용하고 싶을 때

 

 

 

출처:
1. PRAGMA 키워드
http://dbcafe.co.kr/wiki/index.php/%EC%98%A4%EB%9D%BC%ED%81%B4_PRAGMA

https://thebook.io/006696/0220/

2. 예제
https://go-coding.tistory.com/95
https://duddal.tistory.com/27

3. 자율트랜잭션의 부작용(데드락)
https://anjoliena.tistory.com/143

728x90
반응형