Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL] 'ON DUPLICATE KEY UPDATE' - jak otrzymać id zmodyfikowanych rekordów?
kiler129
post
Post #1





Grupa: Zarejestrowani
Postów: 566
Pomógł: 35
Dołączył: 21.06.2006

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


Witjacie!
Problem jest dość prosty. Wykonuje zapytanie "INSERT INTO x ON DUPLICATE KEY UPDATE...". Tabela ma klucz unique na pola A oraz B. Kluczem primary z auto increment jest C.
Po wykonaniu zapytania chciałbym w jakiś sposób dowiedzieć się jakie wartości C miały zmodyfikowane rekordy (czyli te które były już w tabeli i zostały zmodyfikowane a nie dodane).
Brzmi jak przekombinowana idea ale taką nie jest - schemat wygląda tak, że użytkownik wyszukuje coś, dostaje wyniki z lokalnej bazy a dodatkowo są "doładowywane" wyniki z zewnętrznego serwera. Aby nie pytać go znowu o to samo dodaje te wyniki do lokalnej bazy jednakże dane są niepełne - crontab co 24h dodatkowo przelicza pewne wartości i dodaje dodatkowe informacje w drugiej tabeli kluczownej po owym C (IMG:style_emoticons/default/smile.gif)
Uff, ale się rozpisałem - mam nadzieję, że ktoś dobroduszny przeczyta i podpowie (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Pilsener
post
Post #2





Grupa: Zarejestrowani
Postów: 1 590
Pomógł: 185
Dołączył: 19.04.2006
Skąd: Gdańsk

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


Niestety baza nie zwraca ID rekordów a jedynie zmienioną ich ilość (chyba, że o czymś nie wiem).
Jedyne sensowne rozwiązanie to napisanie selecta, który wywali ID rekordów do modyfikacji. Można założyć, że te rekordy zostały zmodyfikowane lub rozbić zapytanie aktualizujące i użyć tego selecta do updatu jeśli ID = nasz select i insertu, jeśli ID != nasz select.
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 6.10.2025 - 21:10