>  기사  >  데이터 베이스  >  INSERT 작업을 기반으로 다른 테이블의 열을 업데이트하는 트리거를 만드는 방법은 무엇입니까?

INSERT 작업을 기반으로 다른 테이블의 열을 업데이트하는 트리거를 만드는 방법은 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-11-24 11:17:13916검색

How to Create a Trigger to Update a Column in Another Table Based on an INSERT Operation?

다른 테이블의 열 업데이트 트리거

데이터베이스에는 BookingRequest, status 및 OccupiedRoom이라는 세 개의 테이블이 있습니다. 동일한 ID를 가진 요청이 OccupiedRoom 테이블에 추가될 때마다 BookingRequest 테이블의 상태 열을 '1'로 변경하는 트리거를 생성하려고 합니다.

이전에 다음 트리거를 시도했습니다.

create trigger occupy_trig after insert on OccupiedRoom 
for each row
begin
  if BookingRequest.idRequest= NEW.idRequest
   then
       update BookingRequest
       set status = '1';
       where idRequest = NEW.idRequest;

    end if;
END;

그러나 성공하지 못했습니다. 작동해야 하는 수정된 버전은 다음과 같습니다.

DELIMITER $$
CREATE TRIGGER occupy_trig
AFTER INSERT ON `OccupiedRoom` FOR EACH ROW
begin
       DECLARE id_exists Boolean;
       -- Check BookingRequest table
       SELECT 1
       INTO @id_exists
       FROM BookingRequest
       WHERE BookingRequest.idRequest= NEW.idRequest;

       IF @id_exists = 1
       THEN
           UPDATE BookingRequest
           SET status = '1'
           WHERE idRequest = NEW.idRequest;
        END IF;
END;
$$
DELIMITER ;

설명:

  • 트리거는 OccupiedRoom 테이블에서 삽입 작업 후에 정의됩니다.
  • 요청 ID가 BookingRequest에 존재하는지 확인하기 위해 지역 변수 @id_exists가 도입되었습니다.
  • 일치하는 ID를 가진 항목이 BookingRequest 테이블에 이미 있는지 확인하는 데 하위 쿼리가 사용됩니다.
  • ID가 존재하는 경우(@id_exists = 1) BookingRequest 테이블이 업데이트됩니다. status = '1'로 설정하여 idRequest가 OccupiedRoom의 새 항목 ID와 일치합니다.
  • 테이블 이름과 잠재적인 스키마 또는 필드를 조정하는 것을 잊지 마세요. 그에 따라 차이점을 명명하세요.

위 내용은 INSERT 작업을 기반으로 다른 테이블의 열을 업데이트하는 트리거를 만드는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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