如何使用 MySQL 觸發器插入 OccupiedRoom 後更新 BookingRequest 狀態?

DDD
發布: 2024-11-24 09:22:14
原創
234 人瀏覽過

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

MySQL 在插入觸發器後更新另一個表的列

建立預訂請求時,需要根據以下資料更新BookingRequest 表中的狀態將相應的請求插入OccupiedRoom 表中。為此,需要一個觸發器。

首先,定義以下表格:

<br> -- BookingRequest 表:<br> CREATE TABLE BookingRequest (<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)
登入後複製

);

);

);
);

);
idStatus INT NOT NULL AUTO_INCREMENT,
nameStatus ENUM('underConsideration', 'approved', 'rejected'),
PRIMARY KEY (idStatus)
登入後複製
);

);

);

);
);

);
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)
登入後複製
);


--狀態表:

CREATE TABLE Status (

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 表:
    CREATE TABLE OccupiedRoom (
  1. );
  2. 前>
  3. 現在,讓我們來寫觸發器:
它的運作方式如下:在OccupiedRoom 表中插入一筆記錄後,觸發器將會執行。 它檢查是否BookingRequest 表中存在透過子查詢的匹配記錄。 如果找到符合項,則狀態BookingRequest 表中的欄位已更新為「1」。

以上是如何使用 MySQL 觸發器插入 OccupiedRoom 後更新 BookingRequest 狀態?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板