我有一张桌子,例如: 输入|平台|名称|版本|全名
我希望在插入或更新时使用“Type.Platform.Name.Version”进行FullName更新。
我认为CONCAT_WS('。',Type,Platform,Name,Version)会提供我想要的数据但是如何将其输入FullName字段?
我查看了触发器,但它们不能像数据一样更新同一个表。 我没有看到自动化存储过程的方法,但也许我没有完全理解它们。
也许只有FullName字段可以触发的表格?有任何见解赞赏!
答案 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”的实体,您可以将其用作常规表 - 从中发出请求,进行更新等。 为了与你提出的目的相同,我曾多次使用它,你应该探索它们。
当然,使用有一些限制,但根据您的问题,它可以满足您的需求。