Mam system, w którym nie mogę kontrolować projektu niektórych tabel (replikowanych przez Slony-I), więc mam szereg tego, co nazywamy „tabelami cieni”, w których wydobywam niektóre informacje z replikowanych tabel i przechowuj go w przetworzonej formie, której potrzebuję, jednocześnie usuwając rekordy, które chcę zignorować.
W tej chwili po skonfigurowaniu nowej repliki uruchamiam aktualizację i ustawiam wartość z powrotem do siebie (np. UPDATE tablename SET field=field
), Aby wymusić uruchomienie wyzwalacza, ale niektóre tabele mają miliony rekordów i rosną i może to potrwać 30 minut . (a potem jest też próżnia).
Czy jest jakiś lepszy sposób, aby go wyzwolić lub napisać funkcję, która będzie działała z wejściem przekazanym lub NEW
zależnym od kontekstu wywołania? Niechętnie trzymam przy sobie dwie różne funkcje, ponieważ widziałem zbyt wiele razy, gdy jedna jest aktualizowana, a nie druga.
Odpowiedzi:
Można to zrobić za pomocą następującego szablonu:
źródło