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;
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redash를 사용할 때 몰랐던 SQL을 쓰는 법을 배웠습니다.최근 redash에서 sql을 쓸 기회가 많고, 이런 쓰는 방법이 있었는지와 sql에 대해 공부를 다시하고 있기 때문에 배운 것을 여기에 씁니다. Redash란? 월별로 데이터를 표시하고 싶습니다 주별로 데이터를 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.