ホームページ >データベース >mysql チュートリアル >MySQL トリガーは行を別のアクティビティ テーブルに挿入してユーザー コメントを効率的に記録するにはどうすればよいですか?

MySQL トリガーは行を別のアクティビティ テーブルに挿入してユーザー コメントを効率的に記録するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-01 06:15:15758ブラウズ

How Can MySQL Triggers Efficiently Log User Comments by Inserting Rows into a Separate Activities Table?

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

データベース内のユーザー アクティビティを追跡する場合、トリガーは強力なツールとなります。これらを使用すると、指定されたテーブルに変更が加えられたときに、特定のアクションや計算を自動的に実行できます。このシナリオでは、コメント テーブルにトリガーを作成すると、アクティビティ テーブルに対応する行を挿入することでユーザー アクションが記録されます。

最後に挿入されたコメント行を識別するには、LAST_INSERT_ID() を使用できます。この関数は、最新の挿入操作で主キー列の自動インクリメント値を返します。

最後に挿入されたコメント行のデータは、新しく挿入された値を参照する NEW キーワードを使用して保存できます。たとえば、コメントの user_id と comment_id をアクティビティ テーブルに挿入するには、次の INSERT ステートメントを使用できます。

INSERT INTO activities (comment_id, user_id) VALUES (NEW.comment_id, NEW.user_id);

ストアド プロシージャを使用すると柔軟性がさらに高まりますが、この場合は単純なトリガーで十分です。

トリガー構造

トリガーの基本構造次のようになります:

CREATE TRIGGER <trigger_name>
AFTER INSERT ON <table_name>
FOR EACH ROW
BEGIN
  -- Insert into activities table using the NEW keyword
END

そのようなトリガーを実装する方法の完全な例を次に示します:

DROP TABLE IF EXISTS comments;
CREATE TABLE comments (
  comment_id INT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
  user_id INT UNSIGNED NOT NULL
) ENGINE=InnoDB;

DROP TABLE IF EXISTS activities;
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;

DELIMITER #

CREATE TRIGGER comments_after_ins_trig AFTER INSERT ON comments
FOR EACH ROW
BEGIN
  INSERT INTO activities (comment_id, user_id) VALUES (NEW.comment_id, NEW.user_id);
END#

DELIMITER ;

INSERT INTO comments (user_id) VALUES (1), (2);

SELECT * FROM comments;
SELECT * FROM activities;

この例必要なテーブルを作成し、コメント テーブルにデータを挿入し、トリガーが対応する行をアクティビティ テーブルに挿入する方法を示します。

以上がMySQL トリガーは行を別のアクティビティ テーブルに挿入してユーザー コメントを効率的に記録するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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