Bu tür birçok kayıt oluşturmak istiyorsanız ne olur (sadece bir değil 10 kullanıcı kaydetmek için)? Aşağıdaki çözümü (sadece 5 sorgu) bulabilirsiniz:
Adım I: Yeni verileri saklamak için geçici tablo oluşturun.
CREATE TEMPORARY TABLE tmp (id bigint(20) NOT NULL, ...)...;
Ardından, bu tabloyu değerlerle doldurun.
INSERT INTO tmp (username, password, bio, homepage) VALUES $ALL_VAL
Burada, $ALL_VALdeğer listesi yerine : ('test1', 'test1', 'bio1', 'home1'), ..., ('testn', 'testn', 'bion', 'homen')
Adım II: Verileri 'kullanıcı' tablosuna gönderin.
INSERT IGNORE INTO users (username, password)
SELECT username, password FROM tmp;
Burada, bazı kullanıcıların zaten içeride olmasına izin verirseniz, "IGNORE" kullanılabilir. İsteğe bağlı olarak, bu kullanıcıların öncesinde kimin bulunduğunu bulmak için III. Adıma benzer bir UPDATE kullanabilirsiniz (ve bunları tmp tablosunda işaretleyin). Burada, kullanıcı adının PRIMARYkullanıcılar tablosunda olduğu gibi beyan edildiğini varsayıyoruz .
Adım III: Kullanıcılardan tmp tablosuna tüm kullanıcı kimliklerini okumak için güncellemeyi uygulayın. BU GEREKLİ ADIM.
UPDATE tmp JOIN users ON tmp.username=users.username SET tmp.id=users.id
IV. Adım: Kullanıcılar için okuma kimliğini kullanarak başka bir tablo oluşturun
INSERT INTO profiles (userid, bio, homepage)
SELECT id, bio, homepage FROM tmp