首頁  >  文章  >  資料庫  >  如何建立 MySQL 觸發器以在 INSERT 後將資料插入另一個表中?

如何建立 MySQL 觸發器以在 INSERT 後將資料插入另一個表中?

Susan Sarandon
Susan Sarandon原創
2024-11-26 20:02:10525瀏覽

How to Create a MySQL Trigger to Insert Data into Another Table After an INSERT?

程式設計MySQL 觸發器以將資料插入另一個表

當資料庫表中發生某些事件時,MySQL 觸發器允許執行預定義的操作。在本例中,目標是建立一個觸發器,當將行插入到特定表中時,該觸發器將行插入到另一個表中。

如何取得最後插入行的 ID

要擷取最後插入行的 ID,需要在觸發器中使用 LAST_INSERT_ID() 函數。此函數傳回最近插入的行的 ID。

儲存上次插入行的資料以供INSERT 語句使用

正確儲存上次插入的資料註解行,它可以儲存在觸發器內的局部變數中。例如,如果使用者ID 欄位名為user_id,評論文字列名為comment_text,則可以使用以下語法:

DECLARE user_id INTEGER;
DECLARE comment_text VARCHAR(255);

SET user_id = NEW.user_id;
SET comment_text = NEW.comment_text;

使用預存程序

觸發器對於自動執行操作以回應某些事件很有用,但它們的功能有限且可能不適合複雜的操作。在這種情況下,建議結合使用觸發器和預存程序。

觸發器結構

觸發器的基本結構如下圖所示:

DELIMITER $$

CREATE TRIGGER comments_after_ins_trig AFTER INSERT ON comments
FOR EACH ROW
BEGIN
  -- Grab the ID of the last inserted row
  SET @last_inserted_id = LAST_INSERT_ID();

  -- Store data from the last inserted row into local variables
  SET @user_id = NEW.user_id;
  SET @comment_text = NEW.comment_text;

  -- Perform the INSERT into the activities table
  INSERT INTO activities (user_id, comment_text) VALUES (@user_id, @comment_text);
END;
$$

DELIMITER ;

以上是如何建立 MySQL 觸發器以在 INSERT 後將資料插入另一個表中?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn