다른 세션에서 동일 테이블사용시 문제 0 6 1,032

by 농sql [Oracle 기초] 오라클 [2019.05.16 09:41:45]


다른 세션 여러 곳에서 같은 테이블에 INSERT UPDATE 할 경우 서로 데이터 간섭받지 않고 사용하는법이 있을까요?


  CREATE GLOBAL TEMPORARY TABLE "TB_TIME"
   (    "END_DATE" DATE
   ) ON COMMIT PRESERVE ROWS ;

이런 방식으로 하면 상관없을거라고 생각했는데;

resource busy and acquire with NOWAIT specified or timeout expired

이런 오류가 뜹니다.

다른곳에서 사용 중인 테이블에 insert update 등 했을때 나오는 문구였던거 같은데..

특이한건  테이블 함수안에서 여러변수를 받아서 insert update 나 merge into 등 이루어지고 나오는 값을 리턴을 합니다.

리턴하는 값들도 여러 값으로 리턴을 하고요..

문제는 ui에서 사용자가 같은 시간에 동시적으로 사용 했을 때 오류가 나는데..

테이블도 2,3개 정도 더 사용하고, 모두 다른 세션에서

ms - sql 변수 테이블 처럼 간섭 안받고 

select insert 할 수 있는 방법이 있을까요?

type object만들어서 사용은 해봤지만 구문을 많이 바꿔야 하는 것 같더라구요.. 
흠.. 어떻게 하는게 좋을까요?

 

by 농sql [2019.05.16 10:50:40]

같은 TEMPORARY TABLE을 여러 곳에서 사용하면 서로 영향을 받나요?


by 마농 [2019.05.16 10:59:12]

글쎄요? 영향이 없을 것 같기는 한데...
이전 질문에 제가 트렌젝션이 필요 없는 순수 Select 쿼리 알려드렸는데요.
그걸 사용한다면 이런 이슈는 없을 듯 합니다.


by 농sql [2019.05.16 11:01:46]

어제껀 잘 해결됐습니다.

다른내용의 내용입니다


by 농sql [2019.05.16 11:02:28]

어제랑 비슷하지만 INSERT UPDATE DELETE MERGE INTO 등 다양한 구문이 추가된 테이블 함수입니다.


by 마농 [2019.05.16 11:17:25]

어제 질문글에 해결내용을 올려주시면
다른 많은 이들에게 도움이 될 듯 합니다.


by 마농 [2019.05.16 11:14:21]

에러메시지 중에 NOWAIT 이 보이는 걸로 봐서는
FOR UPDATE 를 이용해 락을 건 모양이네요.
락을 해제하기 전까지는 다른세션에서는 해당 로우에 접근이 안됩니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입