首頁 > 資料庫 > mysql教程 > 如何建立觸發器以基於 INSERT 操作更新另一個表中的列?

如何建立觸發器以基於 INSERT 操作更新另一個表中的列?

Barbara Streisand
發布: 2024-11-24 11:17:13
原創
950 人瀏覽過

How to Create a Trigger to Update a Column in Another Table Based on an INSERT Operation?

觸發更新另一個表的欄位

在您的資料庫中,您有三個表:BookingRequest、status 和 OccupiedRoom。您希望建立一個觸發器,只要將具有相同 ID 的請求新增至 OccupiedRoom 表中,該觸發器就會將 BookingRequest 表中的狀態列變更為「1」。

您之前嘗試過以下觸發器:

create trigger occupy_trig after insert on OccupiedRoom 
for each row
begin
  if BookingRequest.idRequest= NEW.idRequest
   then
       update BookingRequest
       set status = '1';
       where idRequest = NEW.idRequest;

    end if;
END;
登入後複製

然而,沒有成功。這是一個應該可以工作的修改版本:

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 表上執行插入操作後定義的。
  • 引入了一個局部變數@id_exists來檢查BookingRequest中是否存在請求ID
  • 子查詢用於確定 BookingRequest 表中是否已存在具有匹配 ID 的條目。
  • 如果 ID 存在 (@id_exists = 1),則更新 BookingRequest 表透過設定 status = '1',其中 idRequest 與 OccupiedRoom 中新條目的 ID 匹配。
  • 請記得調整表名稱和潛在架構或對應的欄位名稱差異。

以上是如何建立觸發器以基於 INSERT 操作更新另一個表中的列?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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