Was würde passieren, wenn Sie viele solcher Datensätze erstellen möchten (um 10 Benutzer zu registrieren, nicht nur einen)? Ich finde die folgende Lösung (nur 5 Abfragen):
Schritt I: Erstellen Sie eine temporäre Tabelle zum Speichern neuer Daten.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Füllen Sie als Nächstes diese Tabelle mit Werten.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Hier platzieren Sie anstelle $ALL_VAL
Ihrer Werte eine Werteliste: ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Schritt II: Senden Sie Daten an die 'Benutzer'-Tabelle.
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Hier kann "IGNORE" verwendet werden, wenn Sie zulassen, dass sich einige Benutzer bereits im Inneren befinden. Optional können Sie UPDATE ähnlich wie in Schritt III vor diesem Schritt verwenden, um herauszufinden, wer sich bereits im Benutzer befindet (und sie in der tmp-Tabelle markieren). Hier nehmen wir an, dass der Benutzername wie PRIMARY
in der Benutzertabelle deklariert ist .
Schritt III: Wenden Sie das Update an, um alle Benutzer-IDs von Benutzern in die tmp-Tabelle zu lesen. Dies ist ein wesentlicher Schritt.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
Schritt IV: Erstellen Sie eine weitere Tabelle unter Verwendung der Lese-ID für Benutzer
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp