Name |InitialScore | CurrentScore | Total
-----------------------------------------------
Bart | 145 | 95 | -50
Homer | 230 | 260 | 30
Lisa | 111 | 179 | 68
我有一个包含上述值的表格,我试图做的是使用Total列找到初始得分与名为mods的表中当前得分之间的差异。
我尝试了多种变体:
ALTER TABLE mods
ADD Total AS tphs + won PERSISTED
但我一直得到“#1064 - 你的SQL语法有错误;”我目前的MySQL是5.1.70。有没有办法完成标记为Total的持久列,那么当我对CurrentScore列进行更改时,它会自动更新总数?
答案 0 :(得分:0)
您想要使用触发器。触发器是与表关联的命名数据库对象,并在表发生特定事件时激活。此事件可以是插入,更新或删除。
http://dev.mysql.com/doc/refman/5.0/en/triggers.html
在这种情况下,您需要在插入之前设置触发器。
CREATE TRIGGER insert_total BEFORE INSERT ON mods
FOR EACH ROW SET Total = NEW.InitialScore + NEW.CurrentScore;
这会将InitialScore
和TotalScore
加在一起,并将其放入Total
记录中。仅供参考:此触发器适用于INSERT
和LOAD DATA
。
答案 1 :(得分:0)
update MYTABLE set Total = CurrentScore - InitialScore where 1=1
它会更新所有行,如果您想更新某些特定行,请相应地更新where
子句。
但如果您希望它自动更新,请使用触发器。