我有一个像下面这样的表。(除了id和count都是INT之外,所有都是VARCHAR(255))
--------------------------------------------------------
| id | code | descr | ccode | cdescr | count | display |
--------------------------------------------------------
我想让显示器具有以下格式(代码) - (ccode) - (计数) 我的意思是显示值应该由同一行的值组成 我想在这一行发生变化时更新此显示,我听说过触发器(虽然我不太了解它们),但也读了一些你不能更新你放的表的东西触发。这是真的?如果是的话,我将如何处理我的情况?
答案 0 :(得分:1)
考虑将显示列设为Generated Column
。然后该列将成为表的一部分,但只有在读取它时才会生成其值。
VIRTUAL:不存储列值,但在读取行时会对其进行评估, 任何BEFORE触发后立即。虚拟列不需要 存储
https://dev.mysql.com/doc/refman/5.7/en/create-table-generated-columns.html
答案 1 :(得分:0)
删除显示列。 (它没有自己的数据,只有其他列数据的副本。)
改为创建视图:
create view viewname as
select id, code, descr, ccode, cdescr, count,
concat('(', code, ')-(', ccode ')-(', cast(count as varchar(11)), ')') as display
from tablename
将始终在显示列中返回最新值!