我正在编写以下代码,在插入“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/