SqlServer Update 트리거가 필드 값이 변경되었는지 여부를 판단합니다.

요구사항: 메인 테이블의 필드 값을 수정하고 하위 테이블의 필드를 자동으로 업데이트합니다
프로그램을 변경하지 않기 위해 업데이트 트리거를 만듭니다.
 
create trigger [tig_update] on   
after update 
as
declare @id int
begin
if (update(    ))
begin
select @id=id from inserted
update     set lasttime = GETDATE() where pid = @id
end
end

효과가 틀린 것 같아요. ifupdate(a)만 사용해도 효과가 나타나지 않아요. 왜요?
 
하면, 만약, 만약...
업데이트 메인 테이블 set 열 이름 a = 원래 값where id = id
이 이벤트를 촉발하는 것을 발견했습니다. 이것은 옳지 않습니다. 열 이름 a의 값이 바뀌어야만 하위 테이블의 데이터를 수정할 수 있습니다.
우리가 아래의 촉발기로 바꾸면 효과가 나온다
 
create trigger [tig update] on 테이블 이름 after update as declare @id int,
@upflag int
begin
select @upflag =case when a. 열 이름 = b. 열 이름 then 0 else 1 end, @id=a.id from deleted a left join inserted b on a.id = b.id
if (@upflag>0)
업데이트 하위 테이블 이름 set lasttime = GETDATE () where pid = @id
end
 
설명해 주세요. deleted표에 저장된 것은 수정 전의 값이고, inserted에 저장된 것은 수정된 값입니다. 이렇게 하면 더 좋지 않습니까!

좋은 웹페이지 즐겨찾기