ホームページ  >  記事  >  データベース  >  MySQL トリガーを使用して別のテーブルに行を挿入する方法

MySQL トリガーを使用して別のテーブルに行を挿入する方法

オリジナル
2024-11-22 21:03:17739ブラウズ

How to Use MySQL Triggers to Insert Rows into Another Table?

MySQL トリガーを使用した別のテーブルへの行の挿入

MySQL のようなリレーショナル データベース管理システムでは、トリガーは特定のデータベース アクションを自動化する上で極めて重要な役割を果たします。データの挿入、削除、変更などの特定のイベントに応答して。このコンテキストでは、特定のテーブルに行を挿入するときに別のテーブルに行を挿入するトリガーの作成について詳しく見てみましょう。

問題の理解

目標は、各行挿入イベントを監視する「コメント」テーブルに MySQL トリガーを作成することです。新しいコメント行が挿入されると、トリガーは次のタスクを実行する必要があります:

  1. 新しく挿入されたコメント行の ID を取得します。
  2. 取得した ID を使用して INSERT 操作を実行します。コメント行から関連するデータを「アクティビティ」テーブルに転送します。

トリガー構造

これらの機能を実装するトリガーの基本構造には、次のものが含まれます。

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

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