我正在尝试设置触发器以在插入第一个表后将总和插入到第二个表中。
这些表是:
- 第一个表名:likes
字段:feedid
第二个表名:like_count
- 字段:总计,feedid
在likes
表上插入后,我需要检查feedid
表中是否存在like_count
。如果不只是用total
of插入它1
。如果确实存在,我需要更新like_count.total
以增加一likes.feedid = like_count.feedid
我正在尝试设置触发器以在插入第一个表后将总和插入到第二个表中。
这些表是:
字段:feedid
第二个表名:like_count
在likes
表上插入后,我需要检查feedid
表中是否存在like_count
。如果不只是用total
of插入它1
。如果确实存在,我需要更新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 ;
您可以使用 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;