使用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;
此範例建立必要的表,將一些資料插入到comments 表中,並示範觸發器如何將對應的行插入到 events 表中。
以上是MySQL觸發器如何透過將行插入到單獨的活動表中來有效地記錄使用者評論?的詳細內容。更多資訊請關注PHP中文網其他相關文章!