database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
Oracle
Informix
Sybase
ㆍMS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
MS-SQL Q&A 4586 게시물 읽기
No. 4586
2개 이상의 컬럼으로 복합 기본키를 만든후 update 트리거 처리
작성자
박재연(tough923)
작성일
2008-12-26 10:10ⓒ
2008-12-26 10:15ⓜ
조회수
6,393

안녕하세요~


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)); 


문제가 무엇인지 감이 잘 잡히지 않습니다.


고수님들의 답변 부탁드립니다.

이 글에 대한 댓글이 총 2건 있습니다.

INSTEAD Trigger를 사용하시면 트리거에 필요한 구문 완료후 update 를 해주어야 할것입니다 ^^:

그럼


더 자세한것은 http://msdn.microsoft.com/ko-kr/library/ms175521(SQL.90).aspx 참조하시기 바랍니다.

김병석(byung82)님이 2008-12-28 00:18에 작성한 댓글입니다.

FROM INSERTED JOIN tough923.SDB3$399$01 ON (tough923.SDB3$399$01.USERID = INSERTED.USERID and tough923.SDB3$399$01.NAME = INSERTED.NAME) ;


이건 이렇게 바꾸면 되더군요


FROM DELETED JOIN tough923.SDB3$399$01 ON (tough923.SDB3$399$01.USERID = DELETED.USERID and tough923.SDB3$399$01.NAME = DELETED .NAME)

JOIN INSERTED ON  (tough923.SDB3$399$01.USERID = DELETED.USERID and tough923.SDB3$399$01.NAME = DELETED .NAME)



저만 몰랐는지 모르겠지만, 조인이 위와같이도 가능하군요 ^^;

박재연님이 2009-01-19 21:05에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
4590외부접속은 되고 내부접속은 안되는 현상
두기
2008-12-31
6398
4588여러 테이블을 한 화면에서 보려면 쿼리문을 어떻게 작성해야하나요? [1]
박수영
2008-12-29
5426
4587업데이트 하는 속도 올리기 [3]
julia
2008-12-27
5697
45862개 이상의 컬럼으로 복합 기본키를 만든후 update 트리거 처리 [2]
박재연
2008-12-26
6393
4582안녕하세요 ^^ [1]
박성원
2008-12-24
5039
4581sql튜닝 부탁드립니다.ㅠㅠ [2]
sql
2008-12-23
5060
4580mssql 익스포트시 IDENTITY .... [3]
홍길동
2008-12-19
5941
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.017초, 이곳 서비스는
	PostgreSQL v16.2로 자료를 관리합니다