我有一个MySQL表,其结构如下所示。最后一列表示文件的下载次数。每次访问文件时,都会更改UUID。
表格结构:
+---------+--------------------+--------------+-------------+
| dKey | file_name | file | downloads |
+---------+--------------------+--------------+-------------+
| UUID | file.mp4 | file alias | 0 |
| UUID2 | another_file.mov | file alias | 3 |
+---------+--------------------+--------------+-------------+
我想知道如果行更新,是否有办法增加下载次数。这不是一个要求,我可以在更改UUID时更改它,我只是想知道是否有办法做到这一点。
我环顾四周,找不到任何显示如何操作的内容,或者是否无法完成。
答案 0 :(得分:2)
您可以使用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:
注意:在触发器中,您无法在new.
触发器中设置AFTER UPDATE
列的值,这就是为什么我的答案被编辑为使用BEFORE
。
答案 1 :(得分:0)
我认为最好的解决方案是创建一个更新后的触发器。在触发器中你可以相应地更新计数。