PostgreSQL

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

PostgreSQL Utwórz wyzwalacz po wstawieniu/aktualizacji/usunięciu
Ilekroć zdefiniowana akcja zmiany (deklaracja SQL INSERT, UPDATE, DELETE lub TRUNCATE) jest wykonywana na zdefiniowanej tabeli, wyzwalaczem jest seria zdarzeń, które są wykonywane automatycznie. Wyzwalacze mogą być używane do narzucania reguł biznesowych, uwierzytelniania informacji wejściowych i utrzymywania ścieżki audytu. Wyzwalacze SQL są zaimplementowane zgodnie z formatem SQL. Zawiera struktury używane w kilku językach programowania umożliwiające deklarowanie zmiennych lokalnych, monitorowanie przepływu procesu za pomocą deklaracji, przydzielanie wyników instrukcji do zmiennych i obsługę błędów. Co więcej, po skonstruowaniu wyzwalacza dla czegoś, na przykład tabeli, wyzwalacz jest natychmiast usuwany, gdy tylko tabela zostanie usunięta. Przyjrzymy się, jak działają wyzwalacze PostgreSQL w tym segmencie.

Składnia:

Poniżej przedstawiono prostą składnię generowania wyzwalacza:

>> CREATE TRIGGER nazwa_wyzwalacza [BEFORE|AFTER|ZAMIAST] nazwa-zdarzenia ON nazwa_tabeli [ ---- Logika wyzwalania ];

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

Aby krótko zrozumieć koncepcję wyzwalacza, uruchom powłokę PostgreSQL z poziomu 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 pozostaw ją bez zmian i naciśnij enter. Jak widać, obecnie domyślnie pracujemy na porcie 5432; możesz też to zmienić. Następnie podaj nazwę użytkownika inną niż Postgres, jeśli chcesz pracować z innym użytkownikiem, lub pozostaw ją pustą i naciśnij przycisk Enter. Teraz twoja powłoka poleceń jest gotowa do użycia.

WYZWALANIE po wstawieniu polecenia

Spójrzmy na przykład wyzwalacza, gdy polecenie INSERT zostało użyte jako zdarzenie wyzwalające. W tym celu musimy stworzyć dwie nowe tabele, e.sol., „zatrudnić” i „audyt”. Tabela „zatrudnienie” będzie zawierała dane osobowe pracowników z konkretnej firmy, a tabela „audyt” będzie zawierała informacje o tym, kiedy pracownicy dołączyli do firmy. Zapytania do tworzenia tabel podano poniżej.

>> CREATE TABLE zatrudnij( ID INTEGER NOT NULL PRIMARY KEY, Imię VARCHAR(100) NOT NULL, Wiek VARCHAR(100) NOT NULL, Wynagrodzenie VARCHAR(100) NOT NULL );

>> audyt CREATE TABLE ( empid INTEGER NOT NULL, data_wpisu VARCHAR(100) NOT NULL );

Musisz stworzyć procedurę, która zostanie automatycznie wykonana lub będzie działać po wywołaniu wyzwalacza. Zostanie użyty w następnym poleceniu CREATE TRIGGER. Z poniższego polecenia możesz zorientować się, że tworzymy procedurę „auditlogfunc()”, która zwróci wyzwalacz jako zmienną „$examp_table$”. Funkcja zaczyna się od klauzuli BEGIN, po której następuje instrukcja INSERT. Ta instrukcja INSERT wstawia automatyczny identyfikator i bieżącą datę za pomocą wbudowanej funkcji do tabeli „audit” i zwraca ten wynik do TRIGGER.

Czas wygenerować TRIGGER za pomocą polecenia CREATE TRIGGER. Tworzymy wyzwalacz o nazwie „emp_trig” w tabeli „employ”. Klauzula AFTER INSERT ON oznacza, że ​​ten wyzwalacz będzie działał tylko po wykonaniu polecenia INSERT. FOR EACH ROW oznacza, że ​​po wykonaniu każdego polecenia INSERT ten wyzwalacz wywoła i wykona procedurę „auditlogfunc()” utworzoną tuż przed.

>> UTWÓRZ WYZWALANIE emp_trig PO WSTAWIENIU ZATRUDNIENIA DLA KAŻDEGO WIERSZU WYKONAJ PROCEDURĘ auditlogfunc();

Czas wstawić trochę danych do tabeli „zatrudnienie”. Wykonaj poniższe polecenie INSERT w powłoce.

>> WSTAWIĆ ZATRUDNIENIE (ID, Imię, Wiek, Wynagrodzenie) WARTOŚCI ('1', 'Paul', '34', '60000');

Spójrz na tabelę „zatrudnij”. Dane zostały pomyślnie dodane za pomocą polecenia INSERT.

Teraz rzuć okiem na tabelę „audytu”. Widać, jest również aktualizowany z powodu wyzwalacza „emp_trig” i auditlogfunc().

URUCHAMIANIE po komendzie UPDATE

Przyjrzymy się teraz przykładowi wyzwalacza używającego polecenia UPDATE jako zdarzenia wyzwalającego. Musimy ponownie utworzyć nową procedurę o innej nazwie „aktualizacja”, jak pokazano na obrazku. Ta procedura spowoduje również wstawienie rekordów do tabeli „audytu” na wezwanie.

Teraz utwórz nowy wyzwalacz o nazwie „update_emp” za pomocą polecenia CREATE TRIGGER. Zadziała to dopiero po wykonaniu zapytania UPDATE w tabeli zatrudniać i wywoła procedurę „update”.

Zaktualizuj tabelę „zatrudnij”, ustawiając jej identyfikator na „2”.

Pobierz rekordy tabeli „zatrudnij”, aby wyświetlić zmiany, jak dołączono poniżej.

Jak widać w tabeli „audyt”, została ona zreorganizowana wraz z aktualizacją tabeli „zatrudnienie”.

URUCHOM PO KASOWANIU

Otwórz pgAdmin 4 z aplikacji, aby pracować na GUI PostgreSQL. Pod schematem „test” znajdziesz listę tabel. Utwórz nową tabelę „emp” i tę samą tabelę „audit”.

Tym razem wywołamy polecenie wyzwalacza poleceniem DELETE. Poniżej znajduje się tabela „emp” z kilkoma zapisami.

Oto tabela audytu z dwoma poprzednimi aktualizacjami.

Utwórz procedurę o nazwie „Del()”, aby wywołać wstawienie do tabeli „audit” po usunięciu rekordów z tabeli „emp”.

Utwórz wyzwalacz „del_trig” za pomocą zapytania CREATE TRIGGER. Ten wyzwalacz wykona procedurę „Del”, gdy jakaś klauzula DELETE zostanie wykonana na tabeli „emp”.

Usuńmy rekord z tabeli „emp” gdzie „id” pracownika to „5”. Usunie jeden wiersz z tabeli „emp”.

Pobierz rekordy tabeli „emp” i spójrz na nią. Możesz zobaczyć, że usunięto wiersz, w którym „id” wynosił „5”.

Teraz wyodrębnij rekordy tabeli „audit” i zauważysz, że została ona zaktualizowana, ponieważ operacja DELETE została wykonana na tabeli „emp”.

Wniosek:

Zrobiliśmy prawie każdy istotny przykład, aby zrozumieć koncepcję TRIGGER podczas wykonywania operacji INSERT, UPDATE i DELETE.

Mouse left-click button not working on Windows 10
If you are using a dedicated mouse with your laptop, or desktop computer but the mouse left-click button is not working on Windows 10/8/7 for some rea...
Cursor jumps or moves randomly while typing in Windows 10
If you find that your mouse cursor jumps or moves on its own, automatically, randomly while typing in Windows laptop or computer, then some of these s...
How to reverse Mouse and Touchpads scrolling direction in Windows 10
Mouse and Touchpads not only make computing easy but more efficient and less time-consuming. We cannot imagine a life without these devices, but still...