创建 MySQL 触发器以插入第二个 table
creating MySQL Trigger to insert into second table
我正在尝试设置一个触发器,以便在插入第一个 table 后向第二个 table 插入总和。
table 是:
- 第一个Table姓名:喜欢
字段:feedid
第二个Table姓名:like_count
- 字段:总计,feedid
在 likes
table 上插入后,我需要检查 feedid
是否存在于 table like_count
中。如果不只是插入 total
或 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 ;
您可以使用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;
我正在尝试设置一个触发器,以便在插入第一个 table 后向第二个 table 插入总和。
table 是:
- 第一个Table姓名:喜欢
字段:feedid
第二个Table姓名:like_count
- 字段:总计,feedid
在 likes
table 上插入后,我需要检查 feedid
是否存在于 table like_count
中。如果不只是插入 total
或 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 ;
您可以使用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;