ホームページ >データベース >mysql チュートリアル >MySQL トリガーは行を別のアクティビティ テーブルに挿入してユーザー コメントを効率的に記録するにはどうすればよいですか?
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 サイトの他の関連記事を参照してください。