ホームページ  >  記事  >  データベース  >  MySQL トリガーを使用して OccupiedRoom に挿入した後に BookingRequest ステータスを更新する方法

MySQL トリガーを使用して OccupiedRoom に挿入した後に BookingRequest ステータスを更新する方法

DDD
DDDオリジナル
2024-11-24 09:22:14221ブラウズ

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 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。