데이터베이스 개발자 질문과 답변 게시판
안녕하세요.
매번 진심으로 감사드립니다.
인터넷 뒤져서 나름데로 작성을 해볼려하는데 잘안되서요..
S_IMPORT_DATA 테이블에
===============================
K_NO K_NO_SEQ (순번)
==============================
IS0001 1
IS0001 2
IS0001 3
이런형태의 자료가 있으면 K_NO 가 IS0001 이고 순번이 1인것을 삭제할려고할때
순번이 더 높은 2,3 이란 자료가 있으면 삭제가 안되고 메세지를 보여줄려고해요..
정말 초보라서요..
아래 쿼리를 만들어서 테스트할때는 상위 순번이 있으면 삭제가 안되는게 확인되었거든요.
이것을 트리거로 부착할려는데...
수정을 해주셔도되구요...아에 다른방법으로 해주셔도 상관없어요.
부탁드립니다. 꾸벅...
DECLARE @K_NO NVARCHAR(30),
@CNT NVARCHAR(2),
@CK_CNT
NVARCHAR(2),
@ERR_MSG NVARCHAR(200)
SET @K_NO ='IS0001'
SET @CNT ='1'
SELECT @CK_CNT = COUNT(*)
FROM S_IMPORT_DATA
WHERE K_NO = @K_NO
AND K_NO_SEQ > @CNT
BEGIN
IF @CK_CNT = 0
BEGIN
DELETE S_IMPORT_DATA
WHERE K_NO = @K_NO
AND K_NO_SEQ = @CNT
END
ELSE IF @CK_CNT <> 0
BEGIN
SELECT
@ERR_MSG ='이전데이타가 있습니다'
END
END
Comment 2
-
건우아빠
2013.02.06 13:37
-
건우아빠
2013.02.06 13:50
이렇게 직접 삭제를 날리셔도 됩니다...
DELETE A
FROM #S_IMPORT_DATA A
where A.K_NO = 'IS0001'
and A.K_NO_SEQ = 3
and not exists (
select top 1 *
from #S_IMPORT_DATA
where K_NO = A.K_NO
and K_NO_SEQ < A.K_NO_SEQ )
IF @@ROWCOUNT = 0
-- PRINT '이전 자료가 있어서 삭제 할수 없습니다.'
SELECT '이전 자료가 있어서 삭제 할수 없습니다.'
ELSE
-- PRINT '삭제 되었습니다.'
SELECT '삭제 되었습니다.'
굳이 트리거에 넣으실필요는 없을듯 합니다.
지금대로 체크해서 없으면 삭제를 타게 하시는게 맞을듯 합니다...
삭제 날리고 거기서 체크 하시는것보다....