PhpMyAdmin - funkcje i wyzwalacze

Spisie treści

Funkcje są bardzo podobne do Procedury składowane (SP), różnica tkwi w kilku szczegółach, z których główną jest to, że zwracają tylko jedną wartość, gdy SP może zwrócić więcej niż jedną, dodatkowo nie potrzebujemy zmiennej do przechowywania wartości wynikowej, więc dużo łatwiej jest użyć w ramach SELECT .

Tworzenie funkcjiCelem funkcji jest wyizolowanie logiki kryjącej się za pewnymi elementami tak, aby były łatwiejsze w użyciu, w ten sposób możemy udokumentować bazę danych i jej działanie oraz móc uprościć działania aplikacji, która mogłaby komunikować się z bazą dane. Do stworzenia funkcji wykorzystamy następujące elementy:

  • ten Pole zapytań, gdzie możemy napisać funkcję.
  • Zmiana ogranicznika.
  • Mechanizm edycji i manipulacji funkcją.

Zobaczmy, jak zdefiniować funkcję na przykładzie:

 CREATE FUNCTION pobierz_nazwa_kraju (param_kod_kraju CHAR (2)) ZWRACA VARCHAR (50) CZYTA DANE SQL BEGIN DECLARE nazwa_zmiennej_kraju VARCHAR (50) DEFAULT 'nie znaleziono'; SELECT opis FROM kraj WHERE kod = param_kod_kraju INTO var_country_name; RETURN nazwa_zmiennej_kraju; KONIEC // 
Jak widać, składnia jest bardzo podobna do składni SP, tylko tutaj nie definiujemy wartości W Tak NA ZEWNĄTRZ jeśli nie, to definiujemy parametry, które wprowadzają i deklarujemy pojedynczą wartość, która będzie POWRÓT.
Kiedy idziemy do sekcji Rutyny Na stronie struktury w Bazie danych zobaczymy to odzwierciedlone w następujący sposób:

Po utworzeniu naszej funkcji zobaczmy, jak możemy ją przetestować, ta funkcja, której używamy jako test, to sprawdzanie tabeli krajów i zwracanie nazwy kraju, gdy prosimy o kod, w przypadku nie znajdując go, zwraca nam nie znaleziono:

 SELECT CONCAT ('ca->', get_country_name ('ca'), ', zz->', get_country_name ('zz')) jako test; 
Po prostu dokonujemy wyboru za pomocą CONCAT, aby połączyć wyniki w ciąg i otrzymamy:
 ca-> Kanada, zz-> nie znaleziono
Jak widać, jest to o wiele łatwiejsze niż konstruowanie zapytań, z którymi każdy kraj będzie konsultował się osobno.

Wyzwalaczeten Wyzwalacze różnią się od funkcji i Zapisane proceduryNie muszą być one wywoływane przez użytkownika, pojawią się, gdy akcja zostanie wykonana na tabeli, z którą są połączone, co prowadzi nas do innej różnicy funkcji, jest to, że są one ogólne; ten Wyzwalacze jeśli są połączone z określoną tabelą.
Zobaczmy, jak stworzyć Cyngiel:

 CREATE TRIGGER after_book_insert PO WSTAWIENIU KSIĄŻKI DLA KAŻDEGO WIERSZU ROZPOCZNIJ AKTUALIZACJA autor SET total_page_count = total_page_count + NEW.page_count GDZIE id = NEW.author_id; KONIEC // 
Jak widać, musimy również zdefiniować nowy ogranicznik // wewnątrz pola zapytania, aby móc uwzględnić wszystkie instrukcje Cyngiel, w przypadku przykładu łączymy go w Po wstawieniu to znaczy, po dokonaniu wstawienia, a następnie wykonaniu zdefiniowanej akcji, pomaga to Bazie Danych w autonomicznym zarządzaniu akcjami w miarę ich występowania.

Kiedyś Cyngiel Gdy przejdziemy do strony struktury tabeli, zobaczymy ją dostępną:

wave wave wave wave wave