집 >데이터 베이스 >MySQL 튜토리얼 >트리거 오류 없이 삽입 후 동일한 테이블을 어떻게 업데이트할 수 있습니까?
삽입 후 동일한 테이블 업데이트 트리거: 대체 접근 방식
문제 개요
귀하 이를 기반으로 동일한 테이블의 열을 업데이트하는 ACCOUNTS 테이블에 트리거를 구현하려고 합니다. 새로 삽입된 행의 edit_on 값입니다. 그러나 이를 호출한 트리거 내에서 동일한 테이블을 업데이트하는 것에 대한 제한으로 인해 오류가 발생합니다.
대체 해결 방법: 저장 프로시저
이 제한을 우회하려면, 단일 트랜잭션 내에서 삽입 및 업데이트 작업을 모두 수행하기 위해 저장 프로시저를 사용할 수 있습니다. 이 접근 방식을 사용하면 변경 사항을 수동으로 커밋하여 원하는 업데이트를 활성화할 수 있습니다.
저장 프로시저 구현
다음은 목표를 달성하는 저장 프로시저의 예입니다.
DELIMITER $$ CREATE PROCEDURE InsertAndEditStatus(IN new_pk BIGINT) BEGIN -- Insert new row into ACCOUNTS INSERT INTO ACCOUNTS (pk, user_id, edit_on, status) VALUES (new_pk, /* user_id */, NULL, 'A'); -- Update existing row in ACCOUNTS UPDATE ACCOUNTS SET status='E' WHERE pk = NEW.edit_on; -- Commit transaction COMMIT; END$$ DELIMITER ;
사용방법
저장된 이것을 사용하려면 프로시저에서 새로 삽입된 행의 기본 키를 인수로 사용하여 호출합니다.
CALL InsertAndEditStatus(2147483726);
이 프로시저는 지정된 기본 키와 기본값을 사용하여 새 행을 삽입한 다음 참조되는 기존 행을 업데이트합니다. 새로 삽입된 행의 edit_on 열은 편집되었음을 나타냅니다.
위 내용은 트리거 오류 없이 삽입 후 동일한 테이블을 어떻게 업데이트할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!