Concatenar uma string e chave primária Id ao inserir

Eu tenho uma tabela de usuários no mysql, insiro dados como este:

/* prepare query */ $query = 'INSERT INTO `users`(`first_name`, `last_name`, `gender`, `username`, `profile_picture`, `provider`, `provider_id`, `provider_username`, `provider_profile`, `provider_profile_picture`, `last_login`, `created_date`, `ip_address`) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, NOW(), NOW(), INET_ATON(?))'; /* Prepare an insert statement */ $stmt = $mysqli->prepare($query); if($stmt){ $stmt->bind_param("sssssssssss", $user['first_name'], $user['last_name'], $user['gender'], $user['username'], $user['profile_picture'], $user['provider'], $user['id'], $user['username'], $user['link'], $user['profile_picture'], $_SERVER['REMOTE_ADDR']); $stmt->execute(); /* Execute the statement */ 

Gostaria de fazer o username ser igual a 'user' + userId que é o campo da chave primária autoincremental.

para que os nomes de usuários entrem em ordem:

 user1 user2 user3 and so forth 

O que é uma maneira lisa de conseguir isso?

Se user_id for uma chave primária AUTO_INCREMENT, então você não pode fazer isso com uma única instrução, mesmo se você usar um gatilho.

O problema é que o valor AUTO_INCREMENT não é gerado até que o gatilho BEFORE INSERT executado, mas você não pode alterar o username no AFTER INSERT trigger.

Então, você só precisa fazer o INSERT , então faça imediatamente uma UPDATE .

Se user_id não for AUTO_INCREMENT, mas é algo que você especifica, então é fácil, você apenas faz a concatenação no seu código PHP antes de passar os valores como parâmetros.

Supondo que o nome de usuário seja sempre ‘usuário’ + userid, a maneira mais linda que eu posso pensar para fazer isso é ter uma tabela com tudo, exceto o username , e uma vista em cima dessa tabela que adiciona o username . Você faria quaisquer inserções e atualizações na mesa, e qualquer seleção que exija o username poderia ser feita na visualização.

 CREATE VIEW userview AS SELECT user_id, first_name, last_name, gender, profile_picture, provider, provider_id, provider_username, provider_profile, provider_profile_picture, last_login, created_date, ip_address, 'user' + user_id as username FROM USER