Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: INSERT wielu wierszy ON DUPLICATE
Forum PHP.pl > Forum > Bazy danych > MySQL
Mauaku
Witam na forum.

Mam taką tabelę w bazie:
  1. CREATE TABLE `table` (
  2. `id` int(11) NOT NULL,
  3. `id2` int(11) NOT NULL,
  4. `kol1` tinyint(3) UNSIGNED NOT NULL,
  5. `kol2` tinyint(3) UNSIGNED NOT NULL,
  6. ...
  7. `koln` tinyint(3) UNSIGNED NOT NULL,
  8. UNIQUE KEY `as` (`id`,`id2`),
  9. KEY `id` (`id`),
  10. KEY `id2` (`id2`)
  11. ) ENGINE=MyISAM DEFAULT CHARSET=utf8;


W pętli w php tworzę sobie Insert o mniej więcej takiej treści:
  1. INSERT INTO TABLE VALUES
  2. (id,id2,kol1...koln),(id,id2,kol1...koln),...(id,id2,kol1...koln)


Zanim jednak dodam te rekordy kasuję ich wcześniejszą instancję, jeżeli jest:
  1. DELETE FROM TABLE WHERE
  2. (id1=x1 AND id2=y1) OR (id1=x1 AND id2=y2) OR (id1=x2 AND id2=y3) OR (id1=x2 AND id2=y4) OR ... OR (id1=xn AND id2=ym)


Pytanie: Czy można wykorzystać w tej sytuacji polecenie ON DUPLICATE KEY UPDATE, abym nie musiał usuwać tych rekordów wcześniej i odciążyć serwer?

Pozdrawiam
wookieb
Spróbuj coś takiego
  1. INSERT INTO TABLE
  2. (id1, id2, kol1, kol2)
  3. VALUES
  4. (1, 1, 2, 3),
  5. (2, 2, 3, 4),
  6. ...
  7. ON DUPLICATE KEY UPDATE
  8. kol1 = VALUES(kol1), kol2 = VALUES(kol2)
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.