gpt4 book ai didi

mysql - 如何根据mysql中的名字和姓氏自动填充名称?

转载 作者:搜寻专家 更新时间:2023-10-30 23:45:52 24 4
gpt4 key购买 nike

我需要创建一个包含表 Member 的数据库,该表具有四个属性:名字、中间名、姓氏和姓名。

在使用“CREATE TABLE member”时是否可以指示名称应设置为 First + Middle + Last 还是必须在创建表后发生?

例子:

CREATE TABLE 成员 (first_name varchar(80) NOT NULL, 中间名 varchar(80) NULL, 姓氏 varchar(80) 不为空, 名称 varchar(255) NOT NULL);

最佳答案

您可以创建一个 BEFORE INSERT trigger and a BEFORE UPDATE trigger将名称字段设置为 CONCAT_WS(' ', first_name, middle_name, last_name) 的值,如下所示...但不要这样做。这是个糟糕的主意。根本不要存储名称列。当您要选择名称时,只需选择 CONCAT_WS(' ', first_name, middle_name, last_name) AS full_name。

请注意,如果您连接的任何值是空值,CONCAT 将返回空值,因此您可能想改用 CONCAT_WS(带分隔符)——如果列表中的任何值是空值,它只会忽略该值并使用剩下的。

如果您决定这样做,您的触发器可能看起来像这样:

 CREATE TRIGGER name_update BEFORE UPDATE ON member
FOR EACH ROW
BEGIN
SET NEW.name = CONCAT_WS(' ', NEW.first_name, NEW.middle_name, NEW.last_name);
END;

CREATE TRIGGER name_insert BEFORE INSERT ON member
FOR EACH ROW
BEGIN
SET NEW.name = CONCAT_WS(' ', NEW.first_name, NEW.middle_name, NEW.last_name);
END;

希望对您有所帮助。

关于mysql - 如何根据mysql中的名字和姓氏自动填充名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28732963/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com