MySQL After Insert Trigger to Update Another Table's Column
このクエリは、BookingRequest テーブルの列を更新する MySQL でのトリガーの作成を試みますOccupiedRoom テーブルに行が挿入されたとき。ただし、提供されたトリガーは意図したとおりに機能しません。
この問題を解決するには、トリガーの修正バージョンを次に示します:
DELIMITER $$
CREATE TRIGGER occupy_trig
AFTERそれぞれの OccupiedRoom に挿入ROW
開始
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;
$$ 区切り文字 ; **トリガーの詳細:** * トリガーは `AFTER INSERT` 句を使用して定義されます。これは、行が `OccupiedRoom` テーブルに挿入された後に実行されることを意味します。 * トリガーは「FOR EACH ROW」句を使用して、挿入された各行を個別に処理します。 * トリガー本体の内部: * ブール変数 `@id_exists` を宣言して、挿入された `OccupiedRoom` 行の `idRequest` が `BookingRequest` テーブルに存在するかどうかを確認します。 * `BookingRequest` テーブルをチェックして、新しく挿入された `OccupiedRoom` 行の `idRequest` が存在するかどうかを判断します。存在する場合、`@id_exists` を `1` に設定します。 * `@id_exists` が `1` の場合、`idRequest` が `OccupiedRoom` テーブルの新しい `idRequest` と一致する場合、`BookingRequest` テーブルの `status` 列を '1' に更新します。
以上がAfter Insert トリガーを使用して MySQL のテーブル列を正しく更新する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。