SqlServer Update 트리거가 필드 값이 변경되었는지 여부를 판단합니다.
1001 단어 SqlServer 데이터베이스
프로그램을 변경하지 않기 위해 업데이트 트리거를 만듭니다.
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에 저장된 것은 수정된 값입니다. 이렇게 하면 더 좋지 않습니까!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
sql 주입 공격 상세 해석 (원리 이해)두 번 째 는 간접 적 인 공격 방법 으로 악성 코드 를 표 에 저장 하거나 원 데이터 로 저장 할 문자열 에 주입 하 는 것 이다.저 장 된 문자열 에 서 는 악성 SQL 코드 를 실행 하기 위해 동적 SQL 명령...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.