挿入トリガー後の MySQL による別のテーブルの列の更新
予約リクエストを作成するときは、次の内容に基づいて BookingRequest テーブルのステータスを更新する必要があります。対応するリクエストを OccupiedRoom テーブルに挿入します。これを実現するには、トリガーが必要です。
まず、次のテーブルを定義します:
<br> -- BookingRequest テーブル:<br> CREATE TABLE BookingRequest (</p> <div class="code" style="position:relative; padding:0px; margin:0px;"><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 ;
その仕組みは次のとおりです:
以上がMySQL トリガーを使用して OccupiedRoom に挿入した後に BookingRequest ステータスを更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。