> 데이터 베이스 > MySQL 튜토리얼 > SQL에서 동일한 테이블을 업데이트한 후 트리거 내에서 테이블을 안전하게 업데이트하려면 어떻게 해야 합니까?

SQL에서 동일한 테이블을 업데이트한 후 트리거 내에서 테이블을 안전하게 업데이트하려면 어떻게 해야 합니까?

Mary-Kate Olsen
풀어 주다: 2024-12-21 16:15:14
원래의
953명이 탐색했습니다.

How Can I Safely Update a Table Within a Trigger After an Update on the Same Table in SQL?

동일 테이블에서 업데이트 후 트리거의 테이블 업데이트

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿