DataBase
MS SQL 커서를 이용한 예제 소스
하얀전쟁^^
2009. 6. 30. 14:09
-- ND_DT 를 테이블의 KEY 로 가정하고 만들었습니다. -- 여러 ROW 를 한꺼번에 업데이트 할수도 있기 때문에 트리거 안에서 커서를 돌렸습니다.
CREATE TRIGGER tr_Save_Data_Temp ON dbo.Save_Data_Temp
FOR UPDATE,INSERT
AS SET NOCOUNT ON
DECLARE @ND_DT VARCHAR(20)
BEGIN DECLARE trigger_cur CURSOR FOR SELECT ND_DT FROM inserted
OPEN trigger_cur FETCH NEXT FROM trigger_cur INTO @ND_DT
WHILE (@@FETCH_STATUS=0)
BEGIN
-- Save_Data 에 데이터가 있을시 삭제
IF EXISTS ( SELECT 'TRUE' FROM Save_Data WHERE ND_DT =@ND_DT )
BEGIN
DELETE Save_Data WHERE ND_DT =@ND_DT
END
-- 데이터 입력
INSERT INTO Save_Data
SELECT * FROM Save_Data_Temp WHERE ND_DT =@ND_DT
-- 데이터 삭제
DELETE FROM Save_Data_Temp WHERE ND_DT =@ND_DT FETCH NEXT FROM trigger_cur INTO @ND_DT
END
CLOSE trigger_cur
DEALLOCATE trigger_cur
END