ホームページ  >  記事  >  データベース  >  MySQL トリガーを使用して同じテーブル内の行を更新するにはどうすればよいですか?

MySQL トリガーを使用して同じテーブル内の行を更新するにはどうすればよいですか?

DDD
DDDオリジナル
2024-11-02 04:14:02658ブラウズ

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

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