동일 테이블에서 업데이트 후 트리거의 테이블 업데이트
SQL에서 업데이트 후 트리거의 테이블 업데이트 동일한 테이블에는 잠재적인 문제가 있습니다. 업데이트 작업을 위해 테이블이 이미 잠겨 있고 동일한 트랜잭션의 일부로 실행된 트리거 내에서 테이블에 액세스하려고 하면 충돌이 발생할 수 있기 때문입니다.
이 제한을 우회하려면 AFTER 대신 BEFORE 옵션을 사용하여 트리거의 영향을 받는 열. 이를 통해 원래 업데이트 작업이 발생하기 전에 테이블의 열을 업데이트하여 트랜잭션이 완료되기 전에 테이블에 필요한 변경이 이루어지도록 할 수 있습니다.
다음 예를 고려하세요.
CREATE TRIGGER upd_total_votes BEFORE UPDATE ON products_score FOR EACH ROW BEGIN SET new.votes_total = new.votes_1 + new.votes_2 + new.votes_3 + new.votes_4 + new.votes_5 END ;
이 예에서 트리거는 products_score 테이블의 각 업데이트 작업 전에 실행됩니다. 업데이트된 열(votes_1 ~ votes_5)의 값을 기반으로 votes_total 열의 새 값을 계산하고 이를 트리거 컨텍스트에서 제공하는 new.votes_total 가상 열에 저장합니다.
테이블을 업데이트할 때 , 업데이트 문이 vote_total 열 자체를 명시적으로 업데이트하지 않더라도 트리거는 vote_total 열이 그에 따라 업데이트되도록 합니다.
위 내용은 SQL에서 동일한 테이블을 업데이트한 후 트리거 내에서 테이블을 안전하게 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!