mysql - 带有 WHEN 和 UPDATE 语句的 SQL 触发器

标签 mysql sql triggers

我正在编写以下代码,在插入“ecout”表后,该代码应该从“song”表中增加 1 个“likecount”。 在执行此操作之前,触发器会检查新插入中的 bool 值“liked”是否为“true”。如果是这样,则更新继续。否则,什么也不会发生。

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 的答案仍然相同。

最佳答案

使用 IF THEN 测试来检查 likked 的值

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

关于mysql - 带有 WHEN 和 UPDATE 语句的 SQL 触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55077351/

相关文章:

php - 从 ID 列表批量更新值列表

php - MySQL 服务器安装时间过长

sql - 如何将列中的 NULL 值换成最后一个非 NULL 值?

mysql - 删除mysql中通过触发器插入表中的同一行

sqlite - 在 INSERT 触发器中插入时触发器递归级别过多

MYSQL 从另一个表插入值 - 触发器

mysql - 从多个表中选择除某些列之外的多个列

c# - 将值文本框插入mysql数据库

php - 将数据从一个表插入到另一个表并添加新值

SQL删除触发器