mysql - 带有 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 的答案保持不变。
解决方案
这是你想要的吗?
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 ;
推荐阅读
- jenkins - Jenkins 在创建分支后立即触发构建
- wordpress - 我可以在不安装 WordPress 的情况下添加 WordPress 页面吗?
- python - 如何绕过 botocore 3 中的以下错误:缺少此请求所需的标头:x-amz-content-sha256?
- javascript - 按 lodash 中的多个字段分组和排序
- websocket - 启动时 SOCKET.IO 传输轮询 404 错误
- glsl - 绘制一条通过片段着色器指定的任意三个点的曲线
- c++ - 将二维数组传递给函数时未定义的引用
- sharepoint - Sharepoint 事件 CAML 输出差异
- python - 测试相等性
- python - 根据从末尾开始的列值的计数过滤熊猫数据框