PostgreSQL Utwórz wyzwalacz po wstawieniu/aktualizacji/usunięciu

PostgreSQL Utwórz wyzwalacz po wstawieniu/aktualizacji/usunięciu
Ilekroć zdefiniowane działanie zmiany (wkładka SQL, aktualizacja, usuwanie lub obcięcie) jest przeprowadzane w określonej tabeli, spust jest serią zdarzeń, które są wykonywane automatycznie. Wyzwalacze mogą być wykorzystywane do narzucania reguł biznesowych, uwierzytelniania informacji wejściowych i utrzymania szlaku audytu. Wyzwalacze SQL są wdrażane zgodnie z formatem SQL. Zawiera struktury używane w kilku językach programowania, umożliwiające zadeklarowanie zmiennych lokalnych, monitorowanie przepływu procesu z deklaracji, alokacja wyników instrukcji na zmienne i obsługę błędów. Ponadto, po skonstruowaniu spustu czegoś, takiego jak stół, spust jest natychmiast usuwany, gdy tylko stół zostanie usunięty. Przyjrzymy się, jak funkcjonują wyzwalacze PostgreSQL w tym segmencie.

Składnia:

Poniżej znajduje się prosta składnia do generowania spustu:

>> Utwórz Trigger Trigger_name [przed | po | zamiast] nazwa zdarzenia na nazwie_name [---- Trigger Logic];

Oto wyjaśnienie powyższego zapytania ogólnego.

  • Trigger_name: Nazwa spustu
  • Przed, po, zamiast: Warunki, które decydują, kiedy spust byłby aktywny
  • Nazwa wydarzenia: Tytuł wystąpienia, który może uruchomić spust (może to być, czy to z wstawki, aktualizacji lub usunięcia)
  • Nazwa tabeli: Określa tabelę, na której zostanie zbudowany

Aby krótko zrozumieć koncepcję wyzwalacza, uruchom powłokę PostgreSQL z aplikacji. Zmień serwer, jeśli chcesz pracować na innym serwerze lub naciśnij Enter z klawiatury. Dodaj nazwę bazy danych, nad którą chcesz pracować, w przeciwnym razie zostaw ją taką, jaka jest i dotknij Enter. Jak widać, obecnie pracujemy nad portem 5432 jako domyślnym; możesz to również zmienić. Następnie podaj nazwę użytkownika inną niż Postgres, jeśli chcesz pracować z innym użytkownikiem, w przeciwnym razie zostaw to puste i naciśnij przycisk Enter. Teraz twoja powłoka poleceń jest gotowa do użycia.

Wyzwalacz po wstawieniu polecenia

Spójrzmy na przykład spustu, gdy polecenie Insert zostało użyte jako zdarzenie spustowe. W tym celu musimy utworzyć dwa nowe tabele, e.G., „Zatrudnienie” i „Audyt”. Tabela „Zatrudnienie” będzie zawierać osobiste rekordy pracowników od konkretnej firmy, a tabela „Audyt” będzie zawierać informacje o tym, kiedy pracownicy dołączyli do firmy. Zapytania o tworzenie tabel podano poniżej.

>> Utwórz tabelę Zatrudnienie (ID Liczba całkowita nie zerowa podstawowa, nazwa varchar (100) nie null, wiek varchar (100) nie null, wynagrodzenie varchar (100) nie null);
>> Utwórz audyt tabeli (empid liczba całkowita nie null, entent_date varchar (100) not null);

Musisz utworzyć procedurę, która zostanie automatycznie wykonana lub działać, gdy wywołanie zostanie wywołane. Zostanie użyty w następnym poleceniu Utwórz Trigger. Z poniższego polecenia możesz uzyskać pomysł, że tworzymy procedurę „auditlogfunc ()”, która zwróci wyzwalacz jako zmienną „$ examp_table $”. Funkcja zaczyna się od klauzuli początkowej, a następnie instrukcji Insert. Niniejsza instrukcja Insert wkłada automatyczny identyfikator i bieżący czas za pomocą wbudowanej funkcji do tabeli „Audytu” i zwracając ten wynik do spustu.

Czas wygenerować wyzwalacz za pomocą polecenia Utwórz Trigger. W tabeli tworzymy spust o nazwie „emp_trig”. Klauzula po wstawieniu oznacza, że ​​ten wyzwalacz będzie działał dopiero po wykonaniu polecenia Insert. Dla każdego wiersza oznacza wykonanie każdego polecenia wstawki, ten wyzwalacz wywoła i wykonuje procedurę „auditlogfunc ()” utworzoną tuż wcześniej.

>> Utwórz Trigger emp_trig po wstawieniu na zatrudnienie dla każdego wiersza Wykonaj procedurę auditLogfunc ();

Czas wstawić niektóre dane do tabeli „zatrudnić”. Wykonaj poniższe polecenie Wstaw w skorupce.

>> Wstaw do zatrudniania (id, nazwa, wiek, pensja) wartości („1”, „Paul”, „34”, „60000”);

Spójrz na stół „zatrudnicie”. Dane zostały pomyślnie dodane do polecenia Insert.

Teraz zobacz stół „audytu”. Możesz zobaczyć, jest również aktualizowany ze względu na wyzwalanie „emp_trig” i auditlogfunc ().

Wyzwala się polecenie aktualizacji

Będziemy teraz patrzeć na przykład spustu za pomocą polecenia aktualizacji jako zdarzenia spustu. Musimy ponownie utworzyć nową procedurę z inną „aktualizacją nazw”, jak przedstawiono na obrazie. Ta procedura wprowadzi również rekordy w tabeli „audytu” po wezwaniu.

Teraz utwórz nowy wyzwalacz o nazwie „aktualizacja_emp” za pomocą polecenia Utwórz Trigger. Będzie to działać dopiero po wykonaniu zapytania aktualizacji w tabeli i wywoła procedurę „Aktualizacja”.

Zaktualizuj tabelę „Zastosuj”, ustawiając jego identyfikator na „2”.

Pobierz zapisy tabeli „zatrudniaj”, aby wyświetlić zmiany zgodnie z dołączaniem poniżej.

Jak widać na tabeli „Audyt”, został on zreorganizowany, gdy stół „zatrudni” został zaktualizowany.

Wyzwolenie po poleceniu Usuń

Otwórz pgadmin 4 od aplikacji do pracy na GUI PostgreSQL. W ramach „testu” schematu odkryjesz listę tabel. Utwórz nową tabelę „EMP” i tę samą tabelę „Audytu”.

Tym razem wywołamy polecenie Trigger przez polecenie Usuń. Poniżej znajduje się tabela „EMP” z niektórymi rekordami.

Oto tabela audytu z dwoma poprzednimi aktualizacjami.

Utwórz procedurę o nazwie „del ()”, aby uruchomić wprowadzenie w tabeli „Audytu” po usunięciu rekordów z tabeli „EMP”.

Utwórz wyzwalacz „Del_trig” za pomocą zapytania Utwórz Trigger. Ten wyzwalacz wykona procedurę „DEL”, gdy na tabeli zostanie wykonana klauzula usunięcia „EMP”.

Usuńmy rekord z tabeli „EMP”, w którym pracownik „id” to „5”. Usuwa jeden wiersz z tabeli „EMP”.

Pobierz zapisy tabeli „EMP” i spójrz na to. Możesz zobaczyć, że wiersz został usunięty tam, gdzie „id” wynosił „5”.

Teraz wyodrębnij rekordy tabeli „Audytu”, a zauważysz, że została ona zaktualizowana, ponieważ operacja usunięcia została wykonana w tabeli „EMP”.

Wniosek:

Zrobiliśmy prawie każdy niezbędny przykład, aby zrozumieć koncepcję wyzwalacza podczas wykonywania operacji wstawki, aktualizacji i usuwania.