>  기사  >  데이터 베이스  >  MySQL 트리거를 사용하여 OccupiedRoom에 삽입한 후 BookingRequest 상태를 업데이트하는 방법은 무엇입니까?

MySQL 트리거를 사용하여 OccupiedRoom에 삽입한 후 BookingRequest 상태를 업데이트하는 방법은 무엇입니까?

DDD
DDD원래의
2024-11-24 09:22:14226검색

How to Update a BookingRequest Status After Inserting into OccupiedRoom Using a MySQL Trigger?

트리거 삽입 후 MySQL이 다른 테이블의 열을 업데이트함

예약 요청을 생성할 때 다음을 기반으로 BookingRequest 테이블의 상태를 업데이트해야 합니다. OccupiedRoom 테이블에 해당 요청을 삽입합니다. 이를 달성하려면 트리거가 필요합니다.

먼저 다음 테이블을 정의합니다.

<br> -- BookingRequest 테이블:<br> CREATE TABLE BookingRequest(</p>
<pre class="brush:php;toolbar:false">idRequest INT NOT NULL AUTO_INCREMENT,
roomClass INT NOT NULL,
inDate DATE NOT NULL,
outDate DATE NOT NULL,
numOfBeds INT NOT NULL,
status INT NOT NULL,
idUser INT NOT NULL,
PRIMARY KEY (idRequest),
INDEX idx_status (status),
INDEX idx_user (idUser)

);

-- 상태 테이블:
CREATE TABLE 상태(

idStatus INT NOT NULL AUTO_INCREMENT,
nameStatus ENUM('underConsideration', 'approved', 'rejected'),
PRIMARY KEY (idStatus)

);

-- OccupiedRoom 테이블:
CREATE TABLE OccupiedRoom(

idOccupation INT NOT NULL AUTO_INCREMENT,
idRoom INT NOT NULL,
idRequest INT NOT NULL,
PRIMARY KEY (idOccupation),
INDEX idx_id_room (idRoom),
INDEX idx_id_request (idRequest)

);

이제 다음을 작성해 보겠습니다. 트리거:

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 ;

작동 방식은 다음과 같습니다.

  1. OccupiedRoom 테이블에 레코드를 삽입하면 트리거가 실행됩니다.
  2. 일치하는지 확인합니다. 레코드는 하위 쿼리를 통해 BookingRequest 테이블에 존재합니다.
  3. 일치하는 항목이 발견되면 상태 열 BookingRequest 테이블의 값이 '1'로 업데이트됩니다.

위 내용은 MySQL 트리거를 사용하여 OccupiedRoom에 삽입한 후 BookingRequest 상태를 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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