728x90
Pragma Autonomous_Transaction 사용방법
Pragma Autonomous_Transaction
-- 자율 트랜잭션
-- 부모 트랜잭션의 승인/롤백 여부에 상관없이 자신의 작업을 승인하거나 롤백할 수 있다.
-- 프로시저 생성
CREATE OR REPLACE PROCEDURE LOG_MESSAGE( P_MESSAGE VARCHAR2 )
AS
PRAGMA AUTONOMOUS_TRANSACTION;
-- 자율 트랜잭션
-- 부모 트랜잭션의 승인/롤백 여부에 상관없이 자신의 작업을 승인하거나 롤백할 수 있다.
BEGIN
INSERT INTO LOG_TABLE( USERNAME, DATE_TIME, MESSAGE )
VALUES ( USER, CURRENT_DATE, P_MESSAGE );
COMMIT;
END LOG_MESSAGE;
-- 테이블 생성
CREATE TABLE LOG_TABLE( USERNAME VARCHAR2(30),
DATE_TIME TIMESTAMP,
MESSAGE VARCHAR2(4000) );
CREATE TABLE TEMP_TABLE( N NUMBER );
-- 프로시저 실행
BEGIN
LOG_MESSAGE('INSERT INTO TEMP_TABLE');
INSERT INTO TEMP_TABLE VALUES(12345);
LOG_MESSAGE('ROLLBACK INSERT');
ROLLBACK;
END;
-- 자율 트랜잭션
-- 부모 트랜잭션의 승인/롤백 여부에 상관없이 자신의 작업을 승인하거나 롤백할 수 있다.
-- 프로시저 생성
CREATE OR REPLACE PROCEDURE LOG_MESSAGE( P_MESSAGE VARCHAR2 )
AS
PRAGMA AUTONOMOUS_TRANSACTION;
-- 자율 트랜잭션
-- 부모 트랜잭션의 승인/롤백 여부에 상관없이 자신의 작업을 승인하거나 롤백할 수 있다.
BEGIN
INSERT INTO LOG_TABLE( USERNAME, DATE_TIME, MESSAGE )
VALUES ( USER, CURRENT_DATE, P_MESSAGE );
COMMIT;
END LOG_MESSAGE;
-- 테이블 생성
CREATE TABLE LOG_TABLE( USERNAME VARCHAR2(30),
DATE_TIME TIMESTAMP,
MESSAGE VARCHAR2(4000) );
CREATE TABLE TEMP_TABLE( N NUMBER );
-- 프로시저 실행
BEGIN
LOG_MESSAGE('INSERT INTO TEMP_TABLE');
INSERT INTO TEMP_TABLE VALUES(12345);
LOG_MESSAGE('ROLLBACK INSERT');
ROLLBACK;
END;
반응형
'DataBase > Oracle' 카테고리의 다른 글
분석함수 - RANK OVER(), ROW_NUMBER() OVER() (0) | 2017.02.04 |
---|---|
오라클 테이블스페이스 용량 조회, oracle tablespace 용량 조회 (0) | 2017.01.04 |
오라클 사용자 생성 및 권한주기 (0) | 2015.10.30 |
Merge 기본/활용 (0) | 2015.10.05 |
컬럼에 '(single quote) 데이터 조회하기 (0) | 2015.10.05 |