Qwak
30.08.2010, 12:08:37
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
30.08.2010, 12:10:42
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
30.08.2010, 12:35:03
W moim przypadku będę generować zamiast 20 zapytań "tylko" 10

Ok, dzięki za odpowiedź.
nospor
30.08.2010, 12:36:40
To dziwne masz te dodawanie ze generuje ci az 10 zapytan
Qwak
30.08.2010, 13:09:35
Nie dziwne

Po prostu muszę dodać 10 nowych rekordów do jednej tabeli.
nospor
30.08.2010, 13:10:57
No chyba że tak

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
30.08.2010, 15:18:14
Tak, też o tym myślałem. Jeszcze raz wielkie dzięki za pomoc.
maly_swd
30.08.2010, 18:41:54
a jak by dac to:
INSERT INTO TABLE (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c;
nospor
30.08.2010, 19:03:30
@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
maly_swd
31.08.2010, 09:51:12
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.