Вы можете сделать несколько вещей.
В синтаксисе
Вы можете даже записать его в синтаксисе, Allthough значение не изменяется в таблице, то отображается только что-то другое. Как это
SELECT ID,
name,
image,
CASE WHEN percent > 50 THEN 2 ELSE level END AS Level,
percent FROM....
В Trigger
После каждой вставки вы должны рассчитывать значение, а затем обновить соответствующим образом. Может быть что-то вроде этого
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
Хорошо. Я знаю, как обновить поле с помощью кода sql. Я не знаю, как обновить поле, когда другое поле достигнет определенной точки. Кроме того, работа cron выглядит прямолинейно. – Jess
Который будет очень неэффективным, и обновления не будут выполняться в реальном времени :( – symcbean