mysql - 如何在行插入或删除时触发增量/减量?

标签 mysql triggers

我有一个成员表和一个文章表。

成员可以对文章进行投票。每个单独的投票都会被记录。

我想在添加投票行时将文章作者的投票计数增加 1,并在删除投票行时将文章作者的投票计数减少 1。

我该如何在 MySQL 中做到这一点?我知道您可以使用触发器,但我该怎么做?

最佳答案

你可以这样做

CREATE TRIGGER tg_ai_article_votes
AFTER INSERT ON article_votes
FOR EACH ROW 
  UPDATE articles
     SET votes = COALESCE(votes, 0) + 1
   WHERE id = NEW.article_id;

CREATE TRIGGER tg_ad_article_votes
AFTER DELETE ON article_votes
FOR EACH ROW 
  UPDATE articles
     SET votes = COALESCE(votes, 0) - 1
   WHERE id = OLD.article_id;

您没有提供特定的表架构,因此我在示例中临时使用了表和列名称。

这里是SQLFiddle 演示

关于mysql - 如何在行插入或删除时触发增量/减量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18501719/

相关文章:

php - 使用php从mysql中的出生日期计算年龄

php - 在日期时间列中获取过去 8 小时的数据 Eloquent

javascript - 在特定坐标处触发 JavaScript click() 事件

mySQL 触发器 : Setting empty to NULL, 在最后一列上不起作用

mysql - 将一列与不同表中的另一列进行比较并将值输入另一列触发MySQL

mysql - 如何创建一个触发器,将新行添加到另一个表,并引用添加到当前表的新行?

sql - 使用一个标签查找域?

php - 使用 rowspan 将数据从数据库调用到表中

php - Codeigniter无法从mysql表获取数据

sql-server - 在 SQL 中为插入后、更新后和删除后创建触发器