안녕하세요
locking 에 대한 도움을 구하고자 합니다.
delete 후 insert 하는 sp 를 동시에 여러 사용자가 사용하는 경우
한쪽에서 locking 이 걸리면서 먼저 걸린 프로세스가 끝나면 lock 이 풀리고
작업이 진행되는 것이 아니라 pk 오류가 발생합니다.
이런경우는 어떻게 처리를 해야 하는건지 도움 부탁드립니다.
CREATE PROCEDURE usp_mrfrmmrit_insert
@row INT,
@frm_key INT,
@rank INT,
@mrit_key INT,
@step TINYINT,
@grmrit_cd CHAR(8),
@ent_empl_no INT,
@mfy_empl_no INT
AS
IF @row = 0
BEGIN
DELETE frmmrit
WHERE frm_key = @frm_key
END
INSERT frmmrit (frm_key, rank, mrit_key, step, grmrit_cd, ent_empl_no, ent_dt, mfy_empl_no, mfy_dt)
VALUES (@frm_key, @rank, @mrit_key, @step, @grmrit_cd, @ent_empl_no, GETDATE(), @mfy_empl_no, GETDATE())
frmmrit 테이블에는 frm_key 와 rank 가 unique 에 cluster 로 pk 가 잡혀 있습니다
작업내용은 첫 row 가 들어오면 테이블의 특정 key 값을 모두 delete 하고 다시 insert 하는 작업내용입니다.
|