memb라는 테이블이 있습니다.
이 테이블 안에 point라는 컬럼과 money라는 컬럼이 있는데요
이 두 컬럼중 한 컬럼이 값이 변하면 두 컬럼 값을 변한 값으로 동일시 하고 싶습니다.
전혀 감을 못 잡고 있어요..
도와주세요..;;
트리거로는 아래 작성해서 작동은 하나..다른 부분에 에러가 심해서..
CREATE TRIGGER TU_memb ON memb FOR UPDATE AS
BEGIN
DECLARE
@NUMROWS INT
,@id int
,@point_u int --수정후 point 값
,@money_u INT --수정후 money 값
,@point int --수정전 point 값
,@money int --수정전 money 값
SELECT @NUMROWS = @@ROWCOUNT
IF @NUMROWS = 0 RETURN
DECLARE CURSOR_TU_MEMB CURSOR FOR
SELECT INS.id
,INS.point
,INS.money
,DEL.point
,DEL.money
FROM INSERTED INS
INNER JOIN DELETED DEL ON INS.id = DEL.id --(조건 키)
OPEN CURSOR_TU_MEMB
FETCH NEXT FROM CURSOR_TU_MEMB
INTO @id,@point_u
,@money_u
,@point
,@money
WHILE (@@FETCH_STATUS <> -1)
BEGIN
IF (@@FETCH_STATUS <> -2)
BEGIN
--point 콜롬이 값이 변경 되였을시..
IF @point_u <> @point
BEGIN
UPDATE memb
SET money = @point_u
WHERE id = @id
END
--money 콜롬이 값이 변경 되였을시..
ELSE
IF @money_u <> @money
BEGIN
UPDATE memb
SET point = @money_u
WHERE id = @id
END
END
FETCH NEXT FROM CURSOR_TU_MEMB
INTO @id,@point_u
,@money_u
,@point
,@money
END
CLOSE CURSOR_TU_MEMB
DEALLOCATE CURSOR_TU_MEMB
END
GO
...
이런 식을 저장프로시져를 이용해서 어떻게 해야 할까요?
Comment 1
-
항해자™
2014.01.19 01:53
궂이 트리거를 사용할 필요가 있나요??
point = money 라면 입력된 값으로 모두 update해 주면 되지 않나요??
프로시저 입력이 @point, @money 인 겨우,,
declare @value int
set @value = case when isnull(@point,0) != 0 when @point else @money end
update a
set point = @value
, money = @value
from dbo.memb as a
where id = @id