집 >데이터 베이스 >MySQL 튜토리얼 >트리거를 사용하여 동일한 테이블의 행을 업데이트하는 방법: 겹치는 기간에 대한 솔루션?
트리거를 사용하여 동일한 테이블에서 다른 행 업데이트
문제:
기록 유지 기간이 겹치는 경우 기존 범위와 겹치는 startDate를 사용하여 새 레코드를 삽입할 때 이전 레코드의 종료 날짜를 업데이트해야 하는 경우가 많습니다.
원래 시도:
제공된 트리거는 ADDDATE(NEW.startDate, -1) 값을 사용하여 기존 행의 endDate를 업데이트하려고 시도합니다. 여기서 procKey는 NEW 행과 일치하고 endDate는 20501231입니다. 그러나 이 접근 방식을 사용하면 "업데이트할 수 없습니다"라는 오류가 발생합니다. 저장된 함수/트리거의 테이블 'split'은 이 저장 함수/트리거를 호출한 문에서 이미 사용되었기 때문입니다."
해결책:
안타깝게도 트리거는 트리거를 트리거한 행과 동일한 테이블의 다른 행을 직접 업데이트합니다. 대신 대체 접근 방식이 필요합니다.
저장 프로시저 사용:
다음 논리를 캡슐화하는 저장 프로시저를 만듭니다.
이 접근 방식을 사용하면 단일 트랜잭션 내에서 동일한 테이블의 여러 행을 업데이트할 수 있습니다. 트리거로 인해 발생할 수 있는 충돌.
위 내용은 트리거를 사용하여 동일한 테이블의 행을 업데이트하는 방법: 겹치는 기간에 대한 솔루션?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!