안녕하세요~
update 트리거 구문을 만들어 실행 시켜보다가 해결이 잘 되지 않아 이렇게 글을 올립니다.
2개 이상의 컬럼으로 복합 기본키를 만든후 update 트리거에서
where 절을 어떻게 처리해야 할지 몰라서요~
제가 만든 트리거 구문은 다음과 같습니다
CREATE TRIGGER tough923.SDB3$399$02 ON tough923.TEST_ENC
INSTEAD OF INSERT, UPDATE, DELETE
AS
DECLARE
@i_cnt int,
@u_cnt int,
@d_cnt int
BEGIN
SELECT @i_cnt = count(*) FROM INSERTED;
SELECT @d_cnt = count(*) FROM DELETED;
IF (@i_cnt > 0 AND @d_cnt >0)
BEGIN
SELECT @id = userid FROM tough923.SDB3$399$01
UPDATE tough923.SDB3$399$01 SET
USERID = INSERTED.USERID,
PASSWORD = INSERTED.PASSWORD,
NAME = INSERTED.NAME,
ALIAS = INSERTED.ALIAS,
SSN = INSERTED.SSN,
HIREDATE = INSERTED.HIREDATE,
COMPANY = INSERTED.COMPANY,
SALARY = INSERTED.SALARY
FROM INSERTED JOIN tough923.SDB3$399$01
ON (tough923.SDB3$399$01.USERID = INSERTED.USERID and tough923.SDB3$399$01.NAME = INSERTED.NAME) ;
END;
-- 이하 생략
END;
보시다시피 userid 랑 name 컬럼이 기본키로 같이 묶여 있습니다.
userid 는 int 형이구요 name 은 varchar 입니다.
다음과 같이도 해 보았으나 여전히 update 처리는 되지 않았습니다.
ON (str(tough923.SDB3$399$01.USERID) + tough923.SDB3$399$01.NAME) = (str(INSERTED.USERID) + INSERTED.NAME));
문제가 무엇인지 감이 잘 잡히지 않습니다.
고수님들의 답변 부탁드립니다.
|