创建 MySQL 触发器以插入第二个 table

creating MySQL Trigger to insert into second table

我正在尝试设置一个触发器,以便在插入第一个 table 后向第二个 table 插入总和。

table 是:

likes table 上插入后,我需要检查 feedid 是否存在于 table like_count 中。如果不只是插入 total1。如果它确实存在,我需要更新 like_count.total 以增加一个 likes.feedid = like_count.feedid

当然你必须更改数据库名称并修改列和插入语句

DELIMITER //
CREATE TRIGGER `databasename`.`update_feed_count`
AFTER INSERT ON `likes` FOR EACH ROW
BEGIN
    DECLARE @feedid  VARCHAR(20);
    SELECT feedid INTO @feedid FROM like_count WHERE feedid = NEW.feedid;
    IF @feedid IS NULL OR @feedid = '' THEN
        INSERT INTO like_count (total, feedid) VAKUES (1,NEW.feedid);
    ELSE
        UPDATE like_count lc 
            WHERE `total` = `total` + 1 
            AND NEW.feedid = vc.feedid;
    END IF;
END;
DELIMITER ;

您可以使用MySQL INSERT ... ON DUPLICATE KEY 语法来简化触发器的逻辑。

为此,feedid 必须是 table likes_count 中的唯一列(它是列的主键,或者您需要创建一个 UNIQUE 约束)。那么:

DELIMITER //
CREATE TRIGGER update_likes_count
AFTER INSERT ON likes FOR EACH ROW
BEGIN
    INSERT INTO likes_count (feed_id, total) VALUES (NEW.feedid, 1)
    ON DUPLICATE KEY UPDATE total = total + 1;
END;
//
DELIMITER;