Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Unikalna nazwa
propage
post 22.02.2010, 19:51:17
Post #1





Grupa: Zarejestrowani
Postów: 330
Pomógł: 0
Dołączył: 25.01.2008

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
exood
post 22.02.2010, 20:34:33
Post #2





Grupa: Zarejestrowani
Postów: 86
Pomógł: 16
Dołączył: 2.12.2009
Skąd: Płock/Warszawa

Ostrzeżenie: (0%)
-----


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
Go to the top of the page
+Quote Post
emtiej
post 22.02.2010, 23:09:28
Post #3





Grupa: Zarejestrowani
Postów: 207
Pomógł: 18
Dołączył: 12.04.2009
Skąd: Rypin

Ostrzeżenie: (0%)
-----


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.
Go to the top of the page
+Quote Post
Fifi209
post 23.02.2010, 00:16:01
Post #4





Grupa: Zarejestrowani
Postów: 4 655
Pomógł: 556
Dołączył: 17.03.2009
Skąd: Katowice

Ostrzeżenie: (0%)
-----


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


--------------------
Zainteresowania: C#, PHP, JS, SQL, AJAX, XML, C dla AVR
Chętnie pomogę, lecz zanim napiszesz: Wujek Google , Manual PHP
Go to the top of the page
+Quote Post
legorek
post 23.02.2010, 03:44:56
Post #5





Grupa: Zarejestrowani
Postów: 411
Pomógł: 35
Dołączył: 27.06.2004
Skąd: Kraków

Ostrzeżenie: (0%)
-----


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



--------------------
Go to the top of the page
+Quote Post
maly_swd
post 23.02.2010, 11:36:01
Post #6





Grupa: Zarejestrowani
Postów: 744
Pomógł: 118
Dołączył: 14.02.2009
Skąd: poziome

Ostrzeżenie: (0%)
-----


REPLACE INTO ...


--------------------
śmieszne obrazki
Kryzys: Ser jem spleśniały, wino piję stare i samochód mam bez dachu..
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 24.07.2025 - 21:52