1

可能重复:
插入后和更新后的 MySQL 触发器

我有一个表格,例如:类型 | 平台 | 姓名 | 版本 | 全名

当有插入或更新时,我想用“Type.Platform.Name.Version”更新全名。

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

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

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

4

3 回答 3

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 触发器执行相同的操作。希望有帮助。

于 2012-12-30T04:34:53.710 回答
0

如果您不拘泥于特定版本的 MySQL,您可能需要考虑MariaDB,它支持“虚拟列”。这将解决您遇到的问题。

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

于 2012-12-30T04:32:10.363 回答
0

您的解决方案是MySQL 视图

您有一个包含实际数据的表和一个称为“视图”的实体,您可以将其用作常规表 - 从中​​发出请求、进行更新等。我多次使用它的目的与你问,你应该探索它们。

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

于 2012-12-30T04:51:30.953 回答