更新行时自动增加列

Auto Increment column when row is updated

我有一个 MySQL table 结构如下所示。最后一列代表文件的下载次数。每次访问文件时,它的 UUID 都会更改。

Table结构:

+---------+--------------------+--------------+-------------+
|  dKey   |     file_name      |     file     |  downloads  |
+---------+--------------------+--------------+-------------+
|  UUID   |     file.mp4       |  file alias  |      0      |
|  UUID2  |  another_file.mov  |  file alias  |      3      |
+---------+--------------------+--------------+-------------+

我想知道如果行更新,是否有办法增加下载计数。这不是必须的,我可以在更改UUID时更改它,我只是想知道是否有办法做到这一点。

我环顾四周,找不到任何说明如何做或无法完成的内容。

我认为最好的解决方案是在更新后创建一个 trigger.Within 触发器 您可以相应地更新计数。

http://www.techonthenet.com/mysql/triggers/after_update.php

您可以使用 TRIGGER.

语法看起来像这样:

CREATE TRIGGER increment_downloads
BEFORE UPDATE ON myTable
FOR EACH ROW
BEGIN
  SET new.downloads = old.downloads + 1
END;

编辑

创建触发器时,您可能需要更改分隔符,如下所示:

DELIMITER //
CREATE TRIGGER increment_downloads
BEFORE UPDATE ON myTable
FOR EACH ROW
BEGIN
  SET new.downloads = old.downloads + 1;
END;
//
DELIMITER ;

我在 MySQL 中测试了这个,首先插入一行如下:

INSERT INTO myTable (uuid, downloads) VALUES ('Test', 0);

我是这样更新的:

UPDATE myTable
SET uuid = 'Test1'
WHERE uuid = 'Test';

当我拉出该行时,下载量等于 1:


注意:在触发器中,您不能在 AFTER UPDATE 触发器中设置 new. 列的值,这就是为什么我的答案被编辑为使用 BEFORE.