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
pmir13
post
Post #2





Grupa: Zarejestrowani
Postów: 282
Pomógł: 89
Dołączył: 12.04.2011

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


Jeżeli wrzucasz pojedyncze rekordy to dość łatwo - mysql_affected_rows() będzie dla wstawionych 1, dla update 2.
Jeśli wiele jednocześnie, może rozbić w pętli na pojedyncze?
Swoją drogę trochę dziwne, że dla dwóch unikalnych kluczy używasz tej konstrukcji. Czy update faktycznie coś zmienia?
Jeśli tak to mogą być problemy, gdy to co chcesz wstawić już będzie pasować albo wg jednego klucza albo drugiego.
Tylko pierwszy z nich zostanie zmieniony.
Go to the top of the page
+Quote Post

Posty w temacie


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 Aktualny czas: 15.10.2025 - 17:29