update 지연현상 0 4 2,334

by 잔든건 [PL/SQL] ORACLE UPDATE지연 [2021.12.09 15:15:14]


안녕하세요.

존재할수 없는 구조의 데이터가 존재하여 문의드립니다.

간헐적으로 발생하는 부분인데

A테이블의 기존의 FINISH상태를  FAIL로 변경하고

A테이블에 새로운 행을 INSERT 하면서 FINISH상태의 한행을 추가합니다.

INSERT전에 매번 FAIL로 UPDATE후 FINISH상태의 행을 추가하는데

hh24:mi:ss까지 동일후 뒤에 시간대상이한 여러건의 FINISH한 데이터가 저장이 되어있습니다.

 

예시 PL/SQL

update A set stat = 'FAIL'

where id = 1 and stat = 'FINISH';

 

insert a(id,stat)

values (1,'FINISH');

 

의 구조입니다.

해당 쿼리를 빠르게 여러번 호출할 경우  해당 현상이 발생할 수 있을까요?

가능하다면 해결방안이 어떤게 있을지 답변부탁드립니다.

 

감사합니다.

 

 

 

 

by 동동동 [2021.12.10 11:57:41]

commit 시점이 언제 인가요??

건건이 commit인가요? 전체 for문이 돌고나서 commit인가요?

하나의 PL/SQL 문 안에 update, insert문이 같이 들어 있고 외부에서 for문으로 호출되는 건가요?

for문 중간에 중복된 id도 있을수 있나요??


by 잔든건 [2021.12.29 13:51:51]

건건이 commit이 되고

for문을 사용하지않고 해당 쿼리문이 여러번 호출된 현상입니다/


by JohnSnow [2021.12.10 14:31:27]

A테이블의 정확한 PK 컬럼과
UPDATE 문의 WHERE절, INSERT 문의 PK컬럼 값을 

알아야 현상을 파악할 수 있습니다.

 


by 잔든건 [2021.12.29 13:52:05]

id,로그인시간 컬럼이 PK컬럼입니다.

insert문이 따라서

insert(id,login_time,stat) values ( 1, sysdate, 'FINISH') 가 됩니다..!

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