Spisie treści
PostgreSQL pozwala nam korzystać z różnych języków do wykonywania funkcji, ta funkcjonalność jest bardzo przydatna i sprawia, że jest to jedna z najbardziej elastycznych i wydajnych baz danych, ale także pozwala nam to robić pełni funkcję wyzwalaczy, czyli funkcje, które automatycznie wykrywają, jaka akcja została wykonana i wyzwalają inną akcję, czyli jeśli wstawimy do tabeli np. cyngiel zaktualizować w innym, aby umieścić bardzo podstawową operację tego, czym jest wyzwalacz.Funkcje takie jak wyzwalacze
Żaden wartościowy silnik bazy danych nie powinien być bez możliwości korzystania wyzwalacze do automatycznego wykrywania i obsługi zmian w danych. PostgreSQL oferuje wyzwalacze na poziomie instrukcji i na poziomie rekordu; te, które są na poziomie zdania uruchamiają się raz dla każdego zdania, natomiast te, które są na poziomie rejestrów, mogą być uruchamiane wielokrotnie, np. jeśli wykonamy AKTUALIZACJA która ma wpływ na 1500 rekordów, wyzwalacz na poziomie zdania zostanie uruchomiony tylko raz, podczas gdy wyzwalacz rekordu uruchomi się do 1500 razy.
Kolejnym ważnym punktem w tym temacie jest rozróżnienie między instrukcjami PRZED, DESPUJE DE i ZAMIAST Z w spuście.
Wyzwalacz, który działa z PRZED pożary przed wykonaniem polecenia dające możliwość zmiany lub anulowania lub manipulowania danymi przed ich zmianą, a PO uruchomieniu jest wyzwalany po wykonaniu zmiany, dając tym samym możliwość uzyskania danych już zmodyfikowanych, ten typ wyzwalacza jest najczęściej używany w logach i funkcjach replikacji, ZAMIAST wyzwalacza Działa zamiast akcji, która normalnie byłaby wykonywana, inną cechą tego jest to, że działa tylko z widokami.
Zbuduj funkcję za pomocą wyzwalacza
Tak jak gdy mówimy o funkcjach wiemy, że do ich wykonania możemy używać innych języków, tak w przypadku funkcji takich jak wyzwalacze również możliwe jest użycie niemal dowolnego języka, jednak PL / pgSQL Faworytem jest wypełnianie tych zadań, dlatego poniższy przykład, który zobaczymy na obrazku, zostanie wykonany w tym języku, po obejrzeniu przykładu wyjaśnimy go szczegółowo:
1. Funkcja jest zdefiniowana jako wyzwalacz i może być używana w dowolnej tabeli zawierającej kolumnę upd_ts. Wartość tej kolumny zostanie zmieniona przed dokonaniem zwrotu. Połączenie odbywa się na imprezie PRZED ponieważ gdyby był używany w DESPUJE DE wszystkie zmiany w nowym rekordzie zostaną zignorowane.
2. Spust zostanie uruchomiony przed zapisaniem rekordu.
3. Ta funkcjonalność dostępna tylko w PostgreSQL 9.0 lub wyższy pozwala nam modyfikować tylko te rekordy, które faktycznie zostały dotknięte, w poprzednich wersjach konieczne było dokonywanie porównań między starymi i nowymi polami, jednak nie jest to obsługiwane w przypadku zdarzenia INSTEAD OF.
4. Łączymy wyzwalacz z tabelą.
Na tym kończymy ten samouczek, w którym widzieliśmy, jak utworzyć wyzwalacz, który zostanie zaimplementowany w funkcji, a także wiemy, jakich zdarzeń możemy użyć, gdy ich potrzebujemy.Podobał Ci się i pomógł ten samouczek?Możesz nagrodzić autora, naciskając ten przycisk, aby dać mu pozytywny punkt