【问题标题】:How to auto populate a name based on first and last name in mysql?如何根据mysql中的名字和姓氏自动填充名称?
【发布时间】:2015-04-28 06:28:39
【问题描述】:

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

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

例子:

CREATE TABLE 成员 (first_name varchar(80) NOT NULL, middle_name varchar(80) NULL, 姓氏 varchar(80) 非空, 名称 varchar(255) NOT NULL);

【问题讨论】:

标签: mysql database


【解决方案1】:

您可以创建一个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。

请注意,如果您要连接的任何值为 null,则 CONCAT 将返回 null,因此您可能希望改用 CONCAT_WS(带分隔符) - 如果列表中的任何值为 null,它将忽略该值并使用剩下的。

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

 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;

希望对你有帮助。

【讨论】:

  • 现在我们知道了 nosql 数据库,这不是一个糟糕的主意;我们可以快速检索数据,它对很多操作很有用
猜你喜欢
  • 2018-03-14
  • 1970-01-01
  • 2019-05-19
  • 2020-12-22
  • 2016-02-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多