에 열을 업데이 트 나는 다음 트리거가 있습니다SQL Server는 트리거
ALTER trigger [dbo].[tr_test]
ON [dbo].[customers]
for insert, update, delete
as
IF (@@ROWCOUNT = 0) return
SET NOCOUNT ON
SELECT *
FROM INSERTED I JOIN DELETED D
ON I.id_no = D.id_no
AND EXISTS (SELECT I.*
EXCEPT
SELECT D.*)
이 트리거가 조인을 반환하고 분명 심지어 모든 테이블의 열을 변경하지 않은 자들을 포함한다.
변경되지 않은 열을 필터링하여 실제로 변경된 열만 반환 할 수 있습니까? this-
CREATE trigger [dbo].[tr_test]
ON [dbo].[Grades]
for insert, update, delete
as
IF (@@ROWCOUNT = 0) return
SET NOCOUNT ON
create tablae #inserted (...)
insert into #inserted
SELECT *
from INSERTED
create tablae #deleted (...)
insert into #deleted
SELECT *
from deleted
어쨌든 [UPDATED()] (http://msdn.microsoft.com/en-us/library/ms187326.aspx) 및 [COLUMNS_UPDATED()] (http://msdn.microsoft.com/ko-kr/default.asp)를 사용할 수 있습니다. en-us/library/ms186329.aspx) 하나 이상의 (후자의 경우) 열이 변경되었는지 확인하십시오. 내가 아는 한 변경된 열의 목록을 얻을 수는 없으므로 관심있는 각 열을 테스트해야합니다. 그러나 트리거 관련 지식은 약간 제한되어 있습니다. – jpw
@jpw 이러한 함수는 열이 SET 목록의 일부인지 여부 만 알려줍니다. 결과적으로 열 값이 실제로 변경된 경우 사용자에게 알려주지 않습니다. –