Mysql更新值更改行

时间:2016-08-18 08:51:44

标签: mysql sql

我有一个像下面这样的表。(除了id和count都是INT之外,所有都是VARCHAR(255))

--------------------------------------------------------
| id | code | descr | ccode | cdescr | count | display |
--------------------------------------------------------

我想让显示器具有以下格式(代码) - (ccode) - (计数) 我的意思是显示值应该由同一行的值组成 我想在这一行发生变化时更新此显示,我听说过触发器(虽然我不太了解它们),但也读了一些你不能更新你放的表的东西触发。这是真的?如果是的话,我将如何处理我的情况?

2 个答案:

答案 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

将始终在显示列中返回最新值!