동일 테이블에서 업데이트 후 트리거에서 테이블 업데이트
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 열이 그에 따라 업데이트되도록 합니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3