Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql] Unikalna nazwa
Forum PHP.pl > Forum > PHP
propage
Czy jest możliwośc z poziomu mysql tak ustawić, że gdy dodaje rekord, a dane pole jest unikalne i dodaje nazwę, która już jest, chcę, aby moja naywa została zmodyfikowana. Przykłdowo

Jest w tabeli takie pole
id: 2, nazwa: słoń

Probuje dodać pole 3, w polu nazwa dać wartość również słoń. Chcę, aby w taim wypadku, do słonia została dodana "2", czyli wartość słoń2
exood
nie wiem czy jest w mysql taka możliwość (wątpię, żeby była) - ale ja to bym zrobił tak:
pobrałbym sobie najpierw:

  1. SELECT nazwa FROM tabela WHERE nazwa REGEXP 'słoń([0-9]*)' ORDER BY nazwa DESC LIMIT 1


jeżeli pusty wynik - dodać słoń UPDATE'em

jeżeli pełny to wyciąłbym sobie liczbę która jest za 'słoń' zwiększyłbym ją o 1 i skleił 'słoń' i tą zwiększoną liczbę i tak zapisałbym do bazy smile.gif

może to i trochę zagmatwane, może nawet nieeleganckie - ale jest późno(przynajmniej dla mnie winksmiley.jpg ) - a poza tym powinno działać smile.gif
emtiej
możesz ustawić primary key na nazwę, wtedy mysql nie pozwoli na zapis drugiej takiej samej wartości. Innej możliwości nie ma, no chyba że sposób kolegi exood też jest praktyczny i często stosowany.
Fifi209
Cytat(emtiej @ 22.02.2010, 23:09:28 ) *
możesz ustawić primary key na nazwę, wtedy mysql nie pozwoli na zapis drugiej takiej samej wartości. Innej możliwości nie ma, no chyba że sposób kolegi exood też jest praktyczny i często stosowany.


Chyba unique
legorek
Oczywiście, że się da i nie trzeba żadnych kombinacji, można to zrobić jednym zapytaniem.

  1. INSERT blabla ON DUPLICATE KEY UPDATE pleple


Polecam bardzo interesującą lekturę: manual MySQL na ten temat

maly_swd
REPLACE INTO ...
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.