Witam,
Załóżmy, że mamy tabelkę `ogloszenia` z kolumnami: id_ogloszenia, id_miasta, status_ogloszenia.
Mamy drugą tabelkę `ile_ogloszen` z kolumnami: id_miasta, liczba_ogloszen.
Chciałbym utworzyć taki trigger na tabeli ogloszenia, aby po każdym updacie lub insercie wykonało się zapytanie zliczające liczbę ogłoszeń w każdym mieście i aby ta informacja znalazła się w tabeli ile_ogloszen.
Sprawa wygląda prosto- tworzymy trigger, który najpierw czyści tabelę ile_ogloszen a następnie wykonuje do niej inserta z zawartością zapytania select id_miasta, count(*) from ogloszenia group by id_miasta.
Problem jest teraz gdy wykonam sobie na tabeli ogloszenia update, który zmieni mi dużą liczbę rekordów. Czyli dla każdego zmienianego rekordu będzie kolejno odpalane kosztowne zapytanie grupujące (tabela ogloszenia jest bardzo liczna i niektóre updaty zarżnęłyby mi bazę).
Czy da się zrobić taki trigger, aby wykonaywał zadany kod tylko raz niezależnie od liczby affected rows zapytania triggerującego?
Teoretycznie w dokumentacji http://dev.mysql.com/doc/refman/5.0/en/create-trigger.html jest wyraźnie, że klauzula FOR EACH ROW jest zawsze wymagana więc wygląda na to, że nie da się. Może ktoś z Was zna jednak jakiś trick? Będę bardzo wdzięczny za wskazówkę.