【问题标题】:MySQL Trigger to update count after insertMySQL触发器在插入后更新计数
【发布时间】:2014-12-18 03:55:23
【问题描述】:

我需要一些有关 mysql 触发器的帮助。我目前正在尝试整理一些代码并将一些处理卸载到 mysql 数据库,而不是运行 2 个查询和连接等...

当有人将视频插入数据库时​​,我希望更新类别中的视频计数。

所以你指定类别 id。

这是我迄今为止所拥有的,因此任何帮助都会很好,因为我似乎无法正确获取语法。

CREATE TRIGGER 'db_videos'.'update_video_count'
AFTER INSERT ON 'videos' FOR EACH ROW
BEGIN
    UPDATE video_cat WHERE video_count = video_count + 1 WHERE video_cat = video_cat;
END;

【问题讨论】:

  • 这个查询无效,即使它是无效的,它也不会做任何事情。在您的 where 子句中,您有一个条件来检查 video count = video count + 1。这就像尝试执行 SQL 选择 WHERE 0 = 1。请为您的视频表发布 DDL。

标签: mysql triggers


【解决方案1】:

尝试以下方法:

CREATE TRIGGER 'db_videos'.'update_video_count'
AFTER INSERT ON 'videos' FOR EACH ROW
BEGIN
    UPDATE video_cat vc 
      SET video_count = video_count + 1 
      WHERE NEW.video_cat = vc.video_cat;
END;

【讨论】:

    【解决方案2】:

    您的 where 子句重复且模棱两可。如果我理解您的数据模型正确,请尝试:

    CREATE TRIGGER 'db_videos'.'update_video_count'
    AFTER INSERT ON 'videos' FOR EACH ROW
    BEGIN
        UPDATE video_cat vc 
          WHERE video_count = video_count + 1 
          and NEW.video_cat = vc.video_cat;
    END;
    

    【讨论】:

    • 缺少一个SET,而这个WHERE 的点击次数始终为零(video_count ≠ video_count+1)。
    猜你喜欢
    • 2016-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多