【问题标题】:How to set username using id in mysql如何在mysql中使用id设置用户名
【发布时间】:2015-10-22 20:47:44
【问题描述】:

我在mysql中有一个数据库表

create table userstable
(
    id int not null auto_increment,
    name varchar(80) not null,
    username  varchar(80) not null,
    primary key(id)
);

如何在mysql数据库中添加新行,使用户名为'name'+('id'*100)

例子:

ID  name    username

1   A       A100
2   B       B200
3   C       C300
4   user    user400

【问题讨论】:

  • 您需要为此使用触发器。为该表创建一个 AFTER INSERT 触发器
  • 只是为了确认 DDL 中的明显内容:您可以在 username 中处理重复项。例如(1,A1,A1100)(11,A,A1100)

标签: mysql


【解决方案1】:

您需要触发该过程。创建以下触发器

CREATE TRIGGER username_change 
BEFORE INSERT ON userstable 
FOR EACH ROW 
BEGIN
 SET NEW.username = CONCAT(NEW.name,(NEW.id*100)); 
END

INSERT INTO userstable (id,name, username) VALUES (2, 'B', CONCAT(name,(id*100)));

试试这个。

【讨论】:

  • 感谢您的回答,它的工作,但我可以使用子查询/查询不使用触发器解决这个问题?
  • @Divyang - 检查我给出的插入查询。
【解决方案2】:

您需要在插入后编写触发器或更新字段。类似的问题提供了更多见解:

Can you access the auto increment value in MySQL within one statement?

【讨论】:

    【解决方案3】:

    正如@ArunKrish 正确指出的那样,您可以使用TRIGGER 来更新数据作为插入的一部分。另一种选择是使用视图:

    CREATE VIEW v1 AS 
     SELECT id,name,CONCAT(name,id*100) AS username FROM userstable;
    

    您也可以按原样使用查询,无需查看:

    SELECT id,name,CONCAT(name,id*100) AS username FROM userstable;
    

    【讨论】:

      猜你喜欢
      • 2015-11-15
      • 2021-05-10
      • 1970-01-01
      • 1970-01-01
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多