【问题标题】:MySQL: Trigger that'll increment a columns value, based on DELETE and INSERTMySQL:触发器将根据 DELETE 和 INSERT 增加列值
【发布时间】:2015-01-02 01:01:13
【问题描述】:

我想设置一个触发器来增加列值。如果我执行 INSERT,我希望它为 +1,如果我执行 DELETE,我希望它为 -1。

INSERT INTO `users saved` SET `userid` = '$user->id', `topicid` = '$topicid'
DELETE FROM `users saved` WHERE `userid` = '$user->id' AND `topicid` = '$topicid' LIMIT 1

数据库架构

`users saved`
id | userid | topicid

`total`
topicid | value

我希望触发器生效的表是total,我希望值列(int)上升或下降。

我很不确定从哪里开始。

【问题讨论】:

  • 为什么在查询表的时候不这样做呢?
  • 您的方法不如简单地即时计算连接上的聚合可靠。如果total 表上的UPDATE 失败,你会怎么做?

标签: mysql sql triggers insert sql-delete


【解决方案1】:

虽然我没有测试,但这应该可以工作,删除的语句非常相似:

CREATE TRIGGER increment_value_on_insert 
    AFTER INSERT ON `users saved`
    REFERENCING
        NEW ROW as new_row
    FOR EACH ROW BEGIN
    UPDATE total
    SET value = value+1
    WHERE
     topicid = new_row.topicid
    END

【讨论】:

    猜你喜欢
    • 2020-08-16
    • 2016-02-16
    • 1970-01-01
    • 2014-04-23
    • 2015-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    相关资源
    最近更新 更多