Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Insert into - dodanie wielu rekordów naraz
Forum PHP.pl > Forum > Bazy danych > MySQL
seba123
Cześć.

Mam zapytania typu
  1. INSERT INTO `song` (`title`, `id`, `server`, `dateline`) VALUES ("tytul ", "1", "2", "1316382138"),("tytul2", "3", "4", "1316382138"),("tytul3", "5", "6", "1316382138");
oraz indeks UNIQUE na komórkę ID. Zapytania oczywiście są większe, dla przykładu dałem skrócone.

Wszystko działa ok, do czasu zduplikowanego klucza - tj jeżeli w całym zapytaniu choć jedna wartość ID zwróci zduplikowany klucz (tj jest już taki w bazie), to żadne wartości z tego zapytania nie są dodawane. Jak temu zapobiec ? Czy INSERT IGNORE załatwi tu sprawę?
melkorm
To powinno załatwić sprawę.
maly_swd
ale to do multi inserta chyba nie podejdzie...

lepiej to: INSERT INTO zmien na REPLACE INTO
melkorm
A dlaczego niby miało by nie zadziałać?

  1. CREATE TABLE IF NOT EXISTS `foo` (
  2. `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT,
  3. `someunique` varchar(255) NOT NULL,
  4. PRIMARY KEY (`id`),
  5. UNIQUE KEY `someunique` (`someunique`)
  6. ) ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;


  1. INSERT INTO `foo`( `someunique`) VALUES ('a'), ('a'),('a') ON DUPLICATE KEY UPDATE someunique = someunique;


Zresztą REPLACE używa DELETE/INSERT lub UPDATE przy FK i DELETE moga być problemy że Tobie usunie wiersze w relacji.
maly_swd
faktycznie zapomnialem o tym UPDATE someunique = someunique;

Wiec jednak Twoje rozwiazanie jest lepsze:) ide wypic kawe

pozdr.

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.