![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 1 Dołączył: 12.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Hej, mam pewien problem z którym borykam się od jakiegoś czasu i nie potrafię sobie z nim poradzić.
Chcę wykonać pewne zapytanie, powiedzmy że jest to dodanie do rekordu w odpowiednim polu liczby. INSERT INTO tabela (Imie,Punkty) VALUES("Wojtek","1") Chciał bym jednak, aby gdy zachodzi sytuacja gdy taki rekord już istnieje, był tylko update UPDATE tabela SET punkty=punkty+1 where Imie=`Wojtek` Czy można coś takiego rozwiązać zapytaniem sql? Dla mnie logicznym w php było by najpierw zrobienie zapytania którego wynikiem by było istnieje albo nie istnieje i potem dodanie zapytania, jednak w aplikacji w jakiej chcę to zrealizować nie można tego zrealizować. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 1 421 Pomógł: 310 Dołączył: 18.04.2012 Ostrzeżenie: (0%) ![]() ![]() |
Słowa kluczowe: MERGE, UPSERT, a jesli ta baza to MySQL (nie podałeś), to REPLACE (+ odpowiedni klucz). Ale w tym ostatnim przypadku to uwaga (jeśli masz triggery), bo jest robiony DELETE + INSERT.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
insert...on duplicate key update rozwiaze twoj problem
http://dev.mysql.com/doc/refman/5.6/en/ins...-duplicate.html -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 1 Dołączył: 12.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Oki, lecz nadal mam problem(mysql odpowiadając na wcześniejsze pytanie).
Robię tak:
I teraz jeśli nie ma rekordu to tworzy, tyle że od razu pkt=2, więc wykonuje się ten update, natomiast później przy wykonaniu prawidłowo aktualizuje pierwszy rekord ale i tak dodaje nowy. Próbowałem też
Ale to nie działa w ogóle i dodaje po prostu kolejny rekord. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Na pole NICK ma byc zalozony klucz UNIQUE. Niby jakim cudem baza inaczej ma wiedziec, ze dany rekord to duplikat?
-------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 30 Pomógł: 1 Dołączył: 12.09.2009 Ostrzeżenie: (0%) ![]() ![]() |
Dziękuję ślicznie i przepraszam za niewiedzę ale z bazami zawsze byłem na bakier, wszystko ślicznie działa. : )
|
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 14.08.2025 - 04:45 |