MySQL UPDATE 트리거: 데이터가 변경될 때만 실행됩니다.
MySQL 트리거를 사용하면 특정 데이터베이스 이벤트(예: 테이블 업데이트)가 발생할 때 자동으로 작업을 수행할 수 있습니다. 그러나 때로는 업데이트된 행의 데이터가 실제로 변경될 때만 실행되는 트리거가 필요할 수도 있습니다.
질문:
내장된 'AFTER UPDATE' 트리거는 데이터를 변경하는 업데이트와 그렇지 않은 업데이트를 구분하지 않습니다. 이는 특히 많은 열이 있는 테이블을 처리할 때 불필요한 트리거 실행으로 이어질 수 있습니다.
해결책:
트리거에서 모든 열의 변경 사항을 직접 비교할 수는 없지만 타임스탬프를 사용하는 해결 방법이 있습니다. 행이 수정될 때마다 MySQL은 행의 타임스탬프 열을 자동으로 업데이트합니다. 따라서 이 타임스탬프를 사용하여 데이터가 변경되었는지 확인할 수 있습니다.
구현:
예는 다음과 같습니다.
<code class="language-sql">CREATE TRIGGER ins_sum AFTER UPDATE ON foo FOR EACH ROW BEGIN IF NEW.ts != OLD.ts THEN INSERT INTO bar (a, b) VALUES(NEW.a, NEW.b); END IF; END;</code>
장점:
참고:
이 솔루션은 MySQL의 자동 타임스탬프 업데이트 동작을 사용합니다. 애플리케이션이 타임스탬프를 명시적으로 업데이트하는 경우 예상대로 작동하지 않을 수 있습니다.
위 내용은 업데이트 후 데이터가 실제로 변경될 때만 MySQL 트리거가 실행되도록 하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!