-- 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
'DataBase' 카테고리의 다른 글
Windows Server 2008 R2에서 SQL Server 2008 원격 접속 허용하기 (1) | 2010.06.25 |
---|---|
SQL index 초기화 (0) | 2009.11.25 |
새로운 SQL 잘라내기 공격 및 대처 방법 (0) | 2009.07.06 |
MS-SQL 트리거 (0) | 2009.07.03 |
CTE(Common Table Expression) 사용법 (0) | 2009.06.30 |