mysql 트리거의null값 처리

961 단어 MySQL
문제.
테이블 데모에 필드name이 있고 테이블에 약간의 데이터가 있습니다. 트리거trggerupdate_데모의 테이블 데모에 대한 트리거 정책은AFTER UPDATE입니다.name에 변화가 있으면 오래된 데이터를 다른 테이블에 삽입합니다.테이블 데모의 name 필드, 트리거 trgger 변경update_데모가 대응할 수 있습니다.이제 다음과 같이 하십시오.
update demo set name='Tom' where name is null;
update demo set name=null where name='Green';

트리거가 대응하는 조작을 하지 않은 것을 발견했다.
트리거의 name 모니터링은 다음과 같습니다.
SET @new_name=NEW.name;
SET @old_name=OLD.name;
IF 
    @new_name!=@old_name
THEN
    insert into demo_trgger (new_name,old_name)values(@new_name,@old_name);
END IF;

까닭
@new_name!=@old_name에서null값을 감시할 수 없습니다.
해결책
SET @new_name=NEW.name;
SET @old_name=OLD.name;
IF 
    @new_name!=@old_name
    OR
    (@new_name IS NULL AND @old_name IS NOT NULL) OR ( @new_name IS NOT NULL AND @old_name IS  NULL)
THEN
    insert into demo_trgger (new_name,old_name)values(@new_name,@old_name);
END IF;




좋은 웹페이지 즐겨찾기