2017-12-21 10 views
0

세 개의 테이블 OldTable, NewTableMainTable이 있습니다. 이전 값을 OldTable에 넣고 새 값을 Newtable에 넣는 방아쇠를 만들었습니다.업데이트가 수행 될 때 열의 데이터 가져 오기

변경된 데이터 만 가져와야합니다.

MainTable

EID Ename EAddress Emobile 
1 mittal pardi  9876543212 
2 vaibhav Porbandar 7456543212 

OLD TABLE

ID EID Ename EAddress Emobile  CurrentDate 
1 2 vaibhav pardi  7456543212 2017-12-21 11:00:23.437 

NEW 표

ID EID Ename EAddress Emobile  CurrentDate 
1 2 vaibhav Porbandar 7456543212 2017-12-21 11:00:23.437 

내가 필요한 것 :

EID OldValue NewValue 
2 pardi  Porbandar  

하나 이상의 새롭고 오래된 값이있을 수 있습니다!

내 트리거 코드 : 당신은 트리거 내에서이 데이터를 선택해야하는 이유

ALTER TRIGGER [dbo].[trg_TEST_Upd] 
ON [dbo].[MAIN_TABLE] 
FOR UPDATE 
AS 
    begin 
    SELECT * FROM INSERTED -- show data in INSERTED logical table 
    SELECT * FROM DELETED -- show data in DELETED logical table 

    insert into New_TABLE(EID,Ename,EAddress,Emobile,CurrentDate)    
       select EID,Ename,EAddress,Emobile,getdate() from INSERTED 


    insert into OLD_TABLE(EID,Ename,EAddress,Emobile,CurrentDate)     
      select EID,Ename,EAddress,Emobile,getdate() from DELETED 

End 
+1

MySQL의 또는 SQLSERVER를? plz는 스팸 태그를 스팸하지 마십시오 –

+0

가장 오래된 old_table을 현재 main_table과 일치 시켜서 순 변경을 찾을 수 있습니까? new_table은이 경우에는 관련이 없습니다. –

답변

0

내가 이해가 안 돼요!

그러나 당신이 다른 곳에 삽입해야하는 경우, 당신은이 작업을 수행 할 수 있습니다

SELECT 
    i.EID, 
    MAX(i.Ename) AS newNameValue, 
    MAX(d.Ename) AS oldNameValue, 

    MAX(i.EAddress) AS newEAddressValue, 
    MAX(d.EAddress) AS oldEAddressValue 
FROM INSERTED AS i 
INNER JOIN DELETED AS d ON i.EID = d.EID 
GROUP BY i.EID