同じテーブル上の 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 サイトの他の関連記事を参照してください。