更新另一列时自动更新sql列
Posted
技术标签:
【中文标题】更新另一列时自动更新sql列【英文标题】:auto update sql column when another column is updated 【发布时间】:2016-11-30 05:55:01 【问题描述】:我在 sql 表中有两列(credits 和 badge)。我希望在更新积分时徽章根据积分新值进行更改。
例如,当积分
我尝试了触发器,但由于某种原因它们不起作用(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)
【问题讨论】:
根据question,您似乎正在尝试在触发器中编辑同一个表 你能告诉我们你试图创建的触发器并给你一个错误吗? 帮助我们为您提供帮助向我们展示您尝试过的内容,有人会建议对代码进行更正或更好的方法。但是它不起作用根本没有帮助。 您可以在 SQL Server 中使用 case 语句创建约束,但我不确定 mysql 中的语法 对于这种情况,如果您的徽章取决于一系列信用,例如 100-200 = 高级,为什么还要在同一个表中同时拥有徽章和信用。那为什么不分开,我知道它不是直接回答问题,只是作为一个想法。 【参考方案1】:您可以在 MySQL/MariaDB 中使用虚拟列。他们可以计算。如果要搜索新字段,可以使用持久性字段。
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/
【讨论】:
以上是关于更新另一列时自动更新sql列的主要内容,如果未能解决你的问题,请参考以下文章
当您需要基于另一列更新列时,在 Pandas 中循环的替代方法