Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mySQL] Uniknięcie dodawania duplikatów
Forum PHP.pl > Forum > Bazy danych > MySQL
Qwak
Hej!
Chcę podczas dodawania nowego rekordu do bazy sprawdzić od razu czy taki już nie istnieje. Mam jedną kolumnę w pełni unikalną (inną od id ;-) ) i to po niej chciałbym sprawdzać. Czy istnieje inne rozwiązanie niż SELECT i sprawdzenie ilości odpowiedzi?
Pozdrawiam i proszę o pomoc,
QWAK
nospor
no jeśli założysz uniq na to pole, to przy dodawaniu tego samego mysql ci wypluje błąd - na tej podstawie będziesz wiedział że już jest.
No a drugie rozwiązanie to select. nie wiem w czym ci on przeszkadza.
Qwak
W moim przypadku będę generować zamiast 20 zapytań "tylko" 10 smile.gif
Ok, dzięki za odpowiedź.
nospor
To dziwne masz te dodawanie ze generuje ci az 10 zapytan smile.gif
Qwak
Nie dziwne winksmiley.jpg Po prostu muszę dodać 10 nowych rekordów do jednej tabeli.
nospor
No chyba że tak winksmiley.jpg
UNIQ wydaje się tu być właściwym rozwiązaniem. Pamiętaj tylko, by patrzeć jaki dostajesz błąd. Mysql może zwrócić ci różne błędy, nie tylko że próbujesz dodać coś co już istnieje.
Qwak
Tak, też o tym myślałem. Jeszcze raz wielkie dzięki za pomoc.
maly_swd
a jak by dac to:
  1. INSERT INTO TABLE (a,b,c) VALUES (1,2,3)
  2. ON DUPLICATE KEY UPDATE c=c;
nospor
@maly_swd rozwiązanie co zaproponowales spowoduje, ze w momencie duplikatu nie dostaniemy błędu.A chodziło o to by błąd dostać i na tej podstawie wiedzieć, że duplikat miał miejsce smile.gif
maly_swd
Nospor -> faktycznie, moj blad...

Ale jak by po tym sprawdzic mysql_affected_rows - z tego co pamietam zwraca ona liczbe przetworzonych wierszy a w przypadku gdy update nie zmienil wiersza c=c (czyli nie zmienil) dostaniemy 0 - czyli ze byl duplikat:)

- to teoria oczywiscie wymyslona przy kawie
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.