[mysql] unikatowe rekordy


(pain3hp) #1

jaki parametr w mysqlu aby rekordy textowe nie mogły sie powtarzać ?


(Damgora) #2

UNIQUE


(pain3hp) #3

dzięki, a jak uzyskać informacje od mysqla do php że taki rekord już istnieje?


(GioWDS) #4

Jak spróbujesz dodać taki rekord to MySQL poczęstuje Cię errorem :wink:

Ew. select from where


(pain3hp) #5

zapewne mnie poczęstuje i to zrozumiem ale normalny user tego nie zrozumie dlatego wolałbym dostać informacje w postaci FALSE i ją odpowiednio wyświetlić, tylko jak ją odebrać ?


(ra-v) #6

Zadać pytanie do bazy czy rekord istnieje lub zastosować ON DUPLICATE KEY.


(pain3hp) #7

Zadać pytanie można zadać tylko tutaj chodzi o wydajność bo nie będe zadawał pytania czy istnieje taki identyfikator tylko bede zadawał czy istnieje takie nazwisko a jeśli istnieje to sprawdź czy istnieje takie imie i dopiero wtedy działał. Pytanie czy wydajniej jest by sprawdzał to SQL jakimś poleceniem czy sprawdzała to pętla pobierając po kolei rekord i porównując je ze sobą?


(GioWDS) #8

@pain3hp: opinie są sporne, zależnie od środowiska uruchomieniowego.

Wydaje mi się, że najbardziej optymalne będzie coś takiego

WHERE `nazwisko` <> 'Kowalski' AND `imie` = 'Jan' LIMIT 1

Jeśli zwróci jakiś rekord to wiesz, że istnieje, a jeśli rekordów będzie 0 to możesz dodawać.


(cinkibolek) #9

Myślę że zadając takie pytania nie robisz nic tak zaawansowanego żebyś się musiał przejmować wydajnością przez dwa zapytania więcej do bazy.

Albo po prostu jeśli zwraca error na polu UNIQUE to obsłuż ten error, tak jakbyś dostał False. Przyjmij że error to false czyli że rekord istnieje i obsłuż to programowo.