현재 spring jdbc 와 informxi 를 이용한 프로젝트 이용중입니다.
spring 기본 트랜잭션을 이용해서 일반적인 쿼리를 날리면 트랜잭션이 잘 걸리고
rollback이 잘 되는 것을 확인했습니다.
위의 일반 적인 쿼리라 하면 아래와 같이.
insert into t1(t1, t2) values ('11','22');
insert into t1(t1, t2) values ('11','22'); // 여기서 유닉크 에러 발생되서 rollback 됩니다.
반면 프로시저에서는
create 프로시저 t1(
insert into t1(t1, t2) values ('11','22');
insert into t1(t1, t2) values ('11','22'); // 여기서 유닉크 에러 발생되도 앞에 테이블은 입력이 되고 두번째 줄은 유니크에러가 떠서 입력이 안됩니다.
-- 비긴 work
-- 커밋 work
end 프로시저
)
프로시저 내부에 특정 구문은 아무것도 없고 단순히 insert 문만 있습니다.
에러 발생시
on 익셉션
return 메시지.... // 영어로 입력하니 한글로 입력합니다;;
end 익셉션
리턴 값을 주거나 빼거나 다양한 방법을 시도 해 보았지만
트랜잭션이 걸리지 않더군요.
혹시 경험해 보신분이 계신가요?
당연히 툴에서 call 프로시저명으로 호출해도 프로시저 내에 트랜잭션 설정이 없으니 트랜잭션은 안 걸립니다.
|