首页 > 解决方案 > 带有 WHEN 和 UPDATE 语句的 SQL 触发器

问题描述

我正在编写以下代码,在将插入到“ecoute”表后,该代码应该从“song”表中增加 1 个“likecount”。在这样做之前,触发器会检查来自新插入的布尔值“喜欢”是否为“真”。如果是这样,那么更新继续。否则,什么也不会发生。

CREATE TRIGGER likked AFTER INSERT ON ecoute
FOR EACH ROW
WHEN (NEW.likked)
BEGIN
    UPDATE songs
    SET songs.likecount = songs.likecount +1
    WHERE songs.id = NEW.songid
END

MySQL 回答:

#1064 - Syntax error near 'WHEN (NEW.likked)
BEGIN
    UPDATE songs
    SET songs.likecount = songs.like' at line 3

注意:到目前为止,我一直在尝试创建不同的 JOIN,因为我认为问题是我在更新 SONGS 表时调用了 NEW 表,但 MySQL 的答案保持不变。

标签: mysqlsqltriggers

解决方案


这是你想要的吗?

DELIMITER $$
CREATE TRIGGER likked AFTER INSERT ON ecoute
FOR EACH ROW
BEGIN
    IF NEW.likked = 1 THEN
        UPDATE songs
            SET songs.likecount = songs.likecount +1
            WHERE songs.id = NEW.songid
    END IF;
END;

DELIMITER ;

推荐阅读