mysql中的计算字段?

时间:2012-12-30 04:17:48

标签: mysql stored-procedures triggers calculated-field

  

可能重复:
  MySQL trigger after insert and after update

我有一张桌子,例如: 输入|平台|名称|版本|全名

我希望在插入或更新时使用“Type.Platform.Name.Version”进行FullName更新。

我认为CONCAT_WS('。',Type,Platform,Name,Version)会提供我想要的数据但是如何将其输入FullName字段?

我查看了触发器,但它们不能像数据一样更新同一个表。 我没有看到自动化存储过程的方法,但也许我没有完全理解它们。

也许只有FullName字段可以触发的表格?有任何见解赞赏!

3 个答案:

答案 0 :(得分:3)

你可以做BEFORE INSERT& BEFORE UPDATE触发器。

CREATE TRIGGER fullname_update BEFORE UPDATE ON table
  FOR EACH ROW BEGIN
    SET NEW.fullname = CONCAT_WS('.', NEW.type, NEW.platform, NEW.name, NEW.version);
  END;

您可以对BEFORE INSERT触发器执行相同的操作。希望有所帮助。

答案 1 :(得分:0)

如果您没有停留在特定版本的MySQL上,您可能需要考虑MariaDB,它支持“virtual columns”。这将解决您遇到的问题。

请注意,MariaDB是MySQL的一个分支,因此您将拥有所有标准的MySQL功能。

答案 2 :(得分:0)

您的解决方案是MySQL views

您有一个包含实际数据的表,以及一个名为“view”的实体,您可以将其用作常规表 - 从中​​发出请求,进行更新等。 为了与你提出的目的相同,我曾多次使用它,你应该探索它们。

当然,使用有一些限制,但根据您的问题,它可以满足您的需求。