1

我正在尝试设置触发器以在插入第一个表后将总和插入到第二个表中。

这些表是:

  • 第一个表名:likes
  • 字段:feedid

  • 第二个表名:like_count

  • 字段:总计,feedid

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

4

2 回答 2

0

当然你必须改变数据库名称和熟练的列和插入语句

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 ;
于 2019-09-27T19:29:13.407 回答
0

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

为此,feedid必须是表中的唯一列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;
于 2019-09-27T21:03:13.273 回答