>  기사  >  데이터 베이스  >  MySQL 트리거 내에서 동일한 테이블을 어떻게 업데이트할 수 있나요?

MySQL 트리거 내에서 동일한 테이블을 어떻게 업데이트할 수 있나요?

Susan Sarandon
Susan Sarandon원래의
2024-11-01 16:58:02930검색

How can I update the same table within a MySQL trigger?

동일 테이블 업데이트에 대한 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.