2013-09-30 2 views
0

조인을 기반으로 두 개의 다른 열을 업데이트하는 삽입 트리거 이후에이 기능이 있습니다. 기본적으로 Id는 값으로 바뀝니다. 이것은 Ids 중 하나가 일치하지 않는 경우를 제외하고는 정상적으로 작동합니다 (즉, 기본값은 0입니다). 둘 다 업데이트되지 않습니다. 조인에 실패하면 null을 삽입해야합니다.다른 쿼리를 사용하여 두 개의 열을 동시에 업데이트하는 방법

CREATE TRIGGER [AfterHistoryInsert] 
ON [Jet].[HistoryEntity] 
FOR INSERT 
AS 
BEGIN 
    Update t1 Set t1.OldValue = t2.Value, t1.NewValue = t3.Value 
     From Jet.HistoryEntity t1 
     join Jet.LookupListItemEntity t2 on Cast(t1.OldValue as int) = t2.Id 
     join Jet.LookupListItemEntity t3 on Cast(t1.NewValue as int) = t3.Id 
     inner join inserted i on i.Id = t1.Id 
     where t1.FieldName like '%Id' 
END 

그렉

+0

왼쪽 외부 조인을 시도 했습니까? – bksi

+0

나는 지금있다. 그래, 그거야, 고마워. –

답변

1

시도 왼쪽 외부 당신이 더 큰 테이블에 업데이트하는 경우 대신

0

을 조인, 제안 중 하나가 될 것입니다 : - 업데이트 할 모든 열을 선택 (귀하의 경우 값) 임시 테이블에 - 임시 테이블에 대한 왼쪽 외부 조인을 사용하여 성명을 업데이 트하십시오.

관련 문제