Объединение строки и идентификатора первичного ключа при вставке

У меня есть таблица пользователя в mysql, я вставляю данные следующим образом:

/* 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 */ 

Я бы хотел, чтобы username было равно 'user' + userId которое является полем автоматического ввода ключа.

так что имена пользователей приводятся в порядок:

 user1 user2 user3 and so forth 

что это хороший способ сделать это?

Если user_id является основным ключом AUTO_INCREMENT, вы не можете сделать это с помощью одного оператора, даже если вы используете триггер.

Проблема заключается в том, что значение AUTO_INCREMENT не генерируется до тех пор, пока не запускается триггер BEFORE INSERT , но вы не можете изменить username в триггере AFTER INSERT .

Таким образом, вам просто нужно сделать INSERT , а затем немедленно сделать UPDATE .

Если user_id не является AUTO_INCREMENT, но вместо этого вы указываете себя, то это легко, вы просто выполняете конкатенацию в своем PHP-коде, прежде чем передавать значения в качестве параметров.

Предполагая, что имя пользователя всегда «user» + userid, самым простым способом, который я могу придумать, является наличие таблицы со всем, кроме username , и представление поверх этой таблицы, которая добавляет username . Затем вы будете делать любые вставки и обновления в таблице, и любые варианты, которые требуют username могут быть сделаны в представлении.

 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