밑에 제가 올렸던 질문과 같은 맥락의 질문같은데요...
다시 한번 고견을 부탁드립니다.
테스트 시나리오.
1. tbl400 테이블을 생성하고 data를 insert 합니다.
create table tbl400 ( idx integer, code varchar(20) );
insert into tbl400 values(1, 'merong');
insert into tbl400 values(2, 'merong');
commit;
2. java로 program을 하여 transaction test를 합니다.
2.1 update tbl400 set code = 'babo' where idx = 1;
문장을 A라는 class에서 PreparedStatement를 생성하여
수행하고
10초동안 commit을 하지 않고 대기합니다.
2.2 update tbl400 set code = 'babo2' where idx = 2;
문장을 B라는 class에서 PreparedStatement를 생성하여
수행합니다.
3. 위까지 실행할 경우 B class에서 A class가 끝나기 전까지
아래와 같은 error message가 나옵니다.
com.sybase.jdbc2.jdbc.SybSQLException: ASA Error -1000029:
Cannot open the requested object for write in the current
transaction (7229). Another user has wri
te access in transaction 7228.
-- (db_catx.cxx 1125)
4. A class에서 수행한 query(2.1)가 10초의 대기 시간이 끝나고
PreparedStatement를 close하고
commit 하고 끝냅니다.
5. 이때 B class에서는 다음과 같이 error message가 바뀌어서
나옵니다.
com.sybase.jdbc2.jdbc.SybSQLException: ASA Error -1000011:
Transaction 7229 attempted to access an object created by
transaction 7230.
-- (db_catx.cxx 974)
이상이 테스트 시나리오 입니다.
제가 예상하기로는... A class에서 query의 수행이 끝나면 B
class에서는 제대로 수행이 되어야 될거 같은데 error message가
바뀌어서 나옵니다.
도움 부탁드립니다.
|