Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL] unikalne wartości - dodawanie wielu rekordów
Forum PHP.pl > Forum > Przedszkole
arc
Mam pole w tabeli które może posiadać tylko unikalne wartości, dodaje dane poprzez:
  1. INSERT INTO tabela (`id`,`tresc`) VALUES (NULL,'tresc 1'),(NULL,'tresc 2'),(NULL,'tresc 3')

Wszystko pięknie dopóki nie trafi się ponownie np. 'tresc 1', wtedy zapytanie krzyczy że powtórzono wartość w polu tresc, ale też nie dodaje już pozostałych rekordów z zapytania których nie ma w tabeli, mógłbym to obejść dając każdy insert oddzielnie w pętli, ale wtedy przy 10 rekordach jest 10 zapytań do bazy. Można to jakoś zoptymalizować aby w jednym zapytaniu dodać X rekordów z pominięciem tych które już są?
YourFrog
Jeżeli to MySQL (nie mam doświadczenia z innymi bazami danych, no może trochę z posgresem) to wyjść masz conajmniej dwa (ja znam dwa). Oba opisane są na stronie manuala.

1. INSERT IGNORE..
Spowoduje wykonanie się prawidłowe zapytania ALE nie zwróci wartości wstawionych rekordów (no bo nie wstawi rekordu).

2. INSERT INTO ... ON DUPLICATE KEY UPDATE
Jeżeli rekord będzie istniał to masz możliwość jego edycji. Przydatne czasami smile.gif Problemem może okazać się że liczba zmodyfikowanych wierszy jest x2 w momencie odnalezienia elementu i jego zmodyfikowania.
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.