如何使用 MySQL 觸發器更新同一個表格中的行?

DDD
發布: 2024-11-02 04:14:02
原創
656 人瀏覽過

How to Update Rows in the Same Table using MySQL Triggers?

同一表上的MySQL 觸發器和更新

MySQL 觸發器提供了一個強大的機制,可以在修改或插入資料庫中的資料時會自動執行操作。然而,觸發器的一個重要限制是它們無法更新觸發器所指派的同一個表中的行。出現此限制是由於遞歸呼叫的風險,這可能會導致不可預測的行為。

要解決此限制,請考慮以下解決方法:

使用預存程序

不要依賴觸發器,而是建立一個預存程序來封裝您希望觸發器執行的邏輯。當觸發器被觸發時,它可以呼叫此預存程序來更新相同表中的行。這種方法有效地將更新責任委託給單獨的子例程,避免了觸發器施加的約束。

範例實作

-- Stored Procedure to insert rows based on parent product record
CREATE PROCEDURE insert_child_records(
  IN parent_id INT
)
BEGIN
  -- Insert child records for the given parent
  DECLARE child_id INT;
  INSERT INTO child_table (parent_id)
  SELECT child_id FROM child_table WHERE parent_id = parent_id;
  
END // PROCEDURE insert_child_records
登入後複製
-- Trigger to call stored procedure on new parent record
CREATE TRIGGER insert_child_trigger
AFTER INSERT ON parent_table
FOR EACH ROW
BEGIN
  -- Call the stored procedure to insert child records
  CALL insert_child_records(NEW.id);  -- Replace with actual column name
END // TRIGGER insert_child_trigger
登入後複製

以上是如何使用 MySQL 觸發器更新同一個表格中的行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!