一旦达到一定数量,mysql是否可以自动更新表中的字段?
我有一个称为徽章的表,它具有这些字段
ID,name,image,level, percent
我能做到的是,如果百分比字段达到某个数字(例如50),则级别字段更新为2.
我认为这会触发吗?
解决方法:
您可以做几件事.
在语法上
您甚至可以用语法编写它,尽管表中的值未更改,但仅显示其他内容.像这样
SELECT ID,
name,
image,
CASE WHEN percent > 50 THEN 2 ELSE level END AS Level,
percent FROM....
触发中
每次插入后,您必须计算该值,然后进行相应更新.也许像这样
DELIMITER $$
DROP TRIGGER IF EXISTS databasename.badges_AUPD$$
USE databasename$$
CREATE TRIGGER `badges_AUPD` AFTER UPDATE ON `badges` FOR EACH ROW
// Added this line from Andreas Wederbrands answer which is the correct way
set new.level := case when percent < 50 then 0
when percent < 75 then 1
else 2;
$$
DELIMITER ;
在存储过程中
您可以简单地安排一个执行存储过程的事件.但是,如果您真的需要在值达到50后就进行更改,则此方法将无效.
CREATE PROCEDURE `updateLevel` ()
BEGIN
UPDATE badges set level=2 WHERE precentage > 50;
END