我在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)
答案 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/