동일 테이블 업데이트에 대한 MySQL 트리거 해결 방법
MySQL은 본질적으로 트리거가 할당된 동일한 테이블의 행을 업데이트하는 것을 제한하여 재귀 호출을 방지합니다. . 이러한 제한에도 불구하고 실행 가능한 해결 방법이 있습니다.
제안되는 해결 방법
트리거 내의 행을 직접 업데이트하는 대신 원하는 논리를 실행하는 저장 프로시저를 활용하세요. 이 방법은 행 업데이트 작업을 트리거에서 분리하고 제한을 우회할 수 있게 해줍니다.
예
다음 시나리오를 고려하세요.
<code class="sql">CREATE TABLE MyTable ( id INT PRIMARY KEY, attribute VARCHAR(255) ); -- Trigger to insert a row into MyTable for each new parent product record CREATE TRIGGER my_trigger AFTER INSERT ON Products FOR EACH ROW BEGIN -- Issue SQL statement to call a stored procedure that performs the insert CALL insert_attribute(NEW.id, 'Value'); END;</code>
위의 예에서 my_trigger 트리거는 새로운 레코드가 Products 테이블에 삽입될 때 MyTable에 행을 삽입하기 위해 저장 프로시저 insert_attribute를 호출하여 트리거 내의 직접 행 업데이트 기능을 효과적으로 모방합니다.
추가 고려 사항
이 해결 방법은 기능적인 솔루션 역할을 하지만 성능 및 유지 관리 측면에서 기존 트리거와 다르다는 점에 유의하는 것이 중요합니다. 저장 프로시저를 사용하면 직접 트리거 업데이트에 비해 데이터베이스 시스템에 추가 오버헤드와 복잡성이 발생할 수 있습니다.
위 내용은 MySQL 트리거 내에서 동일한 테이블을 어떻게 업데이트할 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!