另一列更新时自动更新sql列

时间:2016-07-26 14:15:13

标签: php mysql sql triggers phpmyadmin

我在sql表中有两列( credits badge )。我希望更新积分时,徽章要根据积分新值进行更改。

例如,当积分是< 100我希望徽章成为初学者'如果积分变为200,我希望徽章更新为“高级”#39; (只是一个例子)。

我尝试了触发器,但由于某些原因它们无法正常工作(MySQL错误#1442)

我正在使用PhpMyAdmin 触发:

update users 
set badge = (CASE 
    WHEN credits < 50 
    THEN 1
    WHEN credits >= 50 
    THEN 2
    WHEN credits >= 100 
    THEN 3
    WHEN credits >= 125 
    THEN 4
    WHEN credits >= 150 
    THEN 5
    WHEN credits >= 200 
    THEN 6
END)

1 个答案:

答案 0 :(得分:0)

您可以在MySQL / MariaDB中使用虚拟列。他们可以计算。如果要搜索新字段,可以使用persitent字段。

CREATE TABLE `table1` (
  `a` int(11) NOT NULL,
  `b` varchar(32) DEFAULT NULL,
  `c` int(11) AS (a mod 10) VIRTUAL,
  `d` varchar(5) AS (left(b,5)) PERSISTENT
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

参见手册:https://mariadb.com/kb/en/mariadb/virtual-computed-columns/