프로시저를 작성해서 한 테이블에 값이 있으면 select 후 바로 delete 할려고 하는데 실행 시키면
begin
/*------------------------------------------------------------------------*/
BEGIN
SELECT count(USER_ID) FROM DATA_REQUEST into :count_num;
END
/*------------------------------------------------------------------------*/
IF(:count_num > 0) THEN
BEGIN
SELECT FIRST 1 SKIP 0 USER_ID, CMD, DATA FROM DATA_REQUEST into :USER_ID, :CMD, :DATA;
END
begin
delete from data_request where user_id = :User_id;
end
END;
위 프로시저 실행시
lock conflict on no wait transaction.
deadlock.
에러가 나오네요~
테이블에 1개의 데이타만 select 해서 select 값 저장하고 바로 delete 시켜려고 합니다.
다른 클라이언트에서 검색된 데이타가 또 검색이 되면 않되거든요~
1개의 데이타만 불러올경우 'FIRST 1 SKIP 0' 으로 했는데 더 좋은 방법이 있나요??
select 후 바로 delete 하는 방법은 없는건가요?
위 쿼리문을 따로 따로 실행하면 중간에 다른 클라이언트에서 delete 하기 전에 검색이 될꺼 같은데요??
|