¿Qué pasaría si desea crear muchos de esos registros (para registrar 10 usuarios, no solo uno)? Encuentro la siguiente solución (solo 5 consultas):
Paso I: crear una tabla temporal para almacenar nuevos datos.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Luego, llene esta tabla con valores.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Aquí, en lugar de $ALL_VAL
colocar una lista de valores: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Paso II: Enviar datos a la tabla 'usuario'.
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Aquí, "IGNORE" puede usarse, si permite que algunos usuarios ya estén dentro. Opcionalmente, puede usar ACTUALIZACIÓN similar al paso III, antes de este paso, para encontrar a los usuarios que ya están dentro (y marcarlos en la tabla tmp). Aquí suponemos que ese nombre de usuario se declara comoPRIMARY
en la tabla de usuarios.
Paso III: aplique la actualización para leer todas las identificaciones de los usuarios de la tabla tmp. ESTE ES UN PASO ESENCIAL.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
Paso IV: Cree otra tabla, usando la identificación de lectura para los usuarios
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp