MySQL トリガーを使用した別のテーブルへの行の挿入
MySQL のようなリレーショナル データベース管理システムでは、トリガーは特定のデータベース アクションを自動化する上で極めて重要な役割を果たします。データの挿入、削除、変更などの特定のイベントに応答して。このコンテキストでは、特定のテーブルに行を挿入するときに別のテーブルに行を挿入するトリガーの作成について詳しく見てみましょう。
問題の理解
目標は、各行挿入イベントを監視する「コメント」テーブルに MySQL トリガーを作成することです。新しいコメント行が挿入されると、トリガーは次のタスクを実行する必要があります:
トリガー構造
これらの機能を実装するトリガーの基本構造には、次のものが含まれます。
CREATE TRIGGER <trigger_name> AFTER INSERT ON <source_table> FOR EACH ROW BEGIN -- Retrieve the ID of the newly inserted row DECLARE last_insert_id INT; SET last_insert_id = LAST_INSERT_ID(); -- Insert data into the "activities" table INSERT INTO <target_table> (column_list) VALUES (new.column1, new.column2, ..., last_insert_id); END
トリガーの実装
実装では、次の例を考えてみましょう。
-- Create the "comments" and "activities" tables CREATE TABLE comments ( comment_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, user_id INT UNSIGNED NOT NULL ) ENGINE=INNODB; CREATE TABLE activities ( activity_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY, comment_id INT UNSIGNED NOT NULL, user_id INT UNSIGNED NOT NULL ) ENGINE=INNODB; -- Create the trigger to insert data into the "activities" table CREATE TRIGGER comments_after_ins_trig AFTER INSERT ON comments FOR EACH ROW BEGIN -- Retrieve the ID of the newly inserted comment row DECLARE last_insert_id INT; SET last_insert_id = LAST_INSERT_ID(); -- Insert data into the "activities" table INSERT INTO activities (comment_id, user_id) VALUES (new.comment_id, new.user_id); END; -- Insert some data into the "comments" table INSERT INTO comments (user_id) VALUES (1), (2); -- Query the "comments" and "activities" tables to observe the results SELECT * FROM comments; SELECT * FROM activities;
クエリを実行すると、「コメント」テーブルに挿入されたコメント行ごとに、対応する行が「アクティビティ」テーブルに自動的に挿入されることがわかります。これは、望ましい結果を達成する際のトリガーの有効性を示しています。
以上がMySQL トリガーを使用して別のテーブルに行を挿入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。