Wyzwalacz bazy danych



Internet jest niewyczerpanym źródłem wiedzy, także jeśli chodzi o Wyzwalacz bazy danych. Wieki i stulecia ludzkiej wiedzy o Wyzwalacz bazy danych zostały przelane, i nadal są przelewane, do sieci, i właśnie dlatego dostęp do niej jest tak trudny, ponieważ możemy znaleźć miejsca, w których nawigacja może być trudna lub wręcz niewykonalna. Proponujemy, abyś nie rozbił się w morzu danych dotyczących Wyzwalacz bazy danych i abyś mógł szybko i sprawnie dotrzeć do wszystkich portów mądrości.

Mając na uwadze ten cel, zrobiliśmy coś, co wykracza poza to, co oczywiste - zebraliśmy najbardziej aktualne i najlepiej wyjaśnione informacje na temat Wyzwalacz bazy danych. Ułożyliśmy je również w sposób ułatwiający czytanie, z minimalistycznym i przyjemnym wyglądem, zapewniając najlepsze wrażenia użytkownika i najkrótszy czas ładowania. Ułatwiamy Ci to, abyś musiał się martwić tylko o to, by dowiedzieć się wszystkiego o Wyzwalacz bazy danych! Jeśli więc uważasz, że osiągnęliśmy nasz cel i wiesz już wszystko, co chciałeś wiedzieć o Wyzwalacz bazy danych, z przyjemnością przyjmiemy Cię z powrotem na te spokojne morza sapientiapl.com, gdy tylko Twój głód wiedzy zostanie ponownie rozbudzony.

Wyzwalacz , zwykle tylko uruchamiaj nazywa ( angielski za spust ) jest funkcj rónych systemów zarzdzania bazami danych , zwaszcza w duych systemach relacyjnych baz danych.

W jednego rodzaju zmiany (. Na przykad INSERT, UPDATE, DELETEw SQL ) Dane w tabeli przechowywanej programem jest do góry, co pozwala zapobiega tej zmiany, i / lub wykonuje inne czynnoci.

cechy

Wyzwalacze su midzy innymi do zachowania spójnoci danych (kontrole integralnoci) oraz do wstawiania, usuwania lub zmiany danych referencyjnych. Wyzwalacz jest wykonywany (uruchamiany) albo przed wprowadzeniem zmiany w tabeli, do której si odwouje, albo póniej. Niektóre systemy zarzdzania relacyjnymi bazami danych (RDBMS) oferuj równie wyzwalacz Zamiast wstawiania, który umoliwia wykonywanie innych instrukcji SQL zamiast operacji INSERT.

Musisz okreli, czy wyzwalacz powinien by wyzwalany dla kadego zmienionego rekordu danych, czy dla kadego wywoania instrukcji. Przykad: Jeli instrukcja aktualizacji ( UPDATE) zmienia 100 rekordów, wyzwalacz jest aktywowany 100 razy w pierwszym przypadku i tylko raz w drugim.

Poniewa wyzwalacze mog same wstawia, zmienia i usuwa rekordy danych, wyzwalacz moe wyzwala dalsze wyzwalacze po wykonaniu. W ten sposób mona zainicjowa cay acuch operacji przetwarzania.

Aby tworzy wyzwalacze, róne RDBMS maj wbudowane proceduralne jzyki programowania, takie jak PL / pgSQL z PostgreSQL , PL / SQL (z Oracle ) lub SQL PL (z IBM DB2 ). W przypadku niektórych systemów RDBMS procedury skadowane mona równie wywoywa w ramach przetwarzania wyzwalacza . Umoliwia to wywoanie programu napisanego w innym jzyku programowania (C, COBOL, Java). W przypadku wspomnianego tutaj RDBMS moliwe s wyzwalacze zarówno w tabelach, jak iw widokach .

Oprócz standardowych wyzwalaczy SQL, które s wykonywane przed i po zdarzeniu uruchamiajcym, istniej równie wyzwalacze INSTEAD OF, które s uywane zamiast zdarzenia uruchamiajcego w Oracle, IBM DB 2, Microsoft SQL Server i PostgreSQL - nie w standardzie SQL Wydarzenie do realizacji. Wyzwalacze INSTEAD OF mona równie definiowa w widoku.

Przykady wyzwalaczy

Wyzwalanie skadni PL / SQL

   CREATE [OR REPLACE] TRIGGER <trigger_name>
    {BEFORE|AFTER|INSTEAD OF} {INSERT|DELETE|UPDATE [OF <feld_name>]}
     ON <table_name>
      [REFERENCING [NEW AS <new_row_name>] [OLD AS <old_row_name>]]
        [FOR EACH ROW [WHEN (<trigger_condition>)]]
        <trigger_body>

Przykad kodu PL / SQL

 CREATE TRIGGER mitarbeiter_trig_gehalt_biu
 BEFORE INSERT OR UPDATE OF gehalt ON mitarbeiter
 FOR EACH ROW
  -- Triggername mitarbeiter_trig_gehalt_biu
  -- (_biu steht für B-efore I-nsert U-pdate )
  -- Tabelle: MITARBEITER
  -- Trigger soll nur auslösen,
  -- wenn Gehalt kleiner oder gleich 5000 ist oder neues Gehalt kleiner altes Gehalt
  -- in der folgenden WHEN-Klausel erfolgt der Zugriff auf :old und :new OHNE das Zeichen :
 WHEN (new.gehalt <= 5000 or new.gehalt < old.gehalt)
 DECLARE
   v_mitarbeiter_name VARCHAR2(255):=null;
   -- Cursor holt "Name, Vorname" von Mitarbeitertabelle
   -- Explizite Definition des Cursors hat
   -- Performance-Vorteile gegen "select into <variable>" im Trigger-Body
   cursor c_name is select name||', '||vorname
                    from mitarbeiter
                    where mitarbeiternummer = :NEW.MITARBEITERNR;
 BEGIN
   -- Mitarbeiter-Name ermitteln und in Variable v_mitarbeiter_name speichern
   open c_name;
   fetch c_name into v_mitarbeiter_name;
   close c_name;
   -- Bei Gehalt kleiner oder gleich 5000 Exception auslösen
      --> Fehler wird in der Regel bis zur Anwendung hochgereicht
   -- Exception-Nr -20000 - -29999 können selbst definiert werden
   IF :NEW.GEHALT <= 5000 THEN
     RAISE_APPLICATION_ERROR(
         -20901,
         'Managergehalt für Mitarbeiter '||v_mitarbeiter_name||' zu klein!'
     );
   END IF;
   IF :NEW.GEHALT < :OLD.GEHALT THEN
     RAISE_APPLICATION_ERROR(
         -20902,
         'Gehaltskürzung für Mitarbeiter '||v_mitarbeiter_name||' nicht erlaubt!'
     );
   END IF;
 END;
 /

literatura

  • H. Faeskorn-Woyke, B. Bertelsmeier, P. Riemer, E. Bauer: Systemy baz danych, teoria i praktyka z SQL2003, Oracle i MySQL. Pearson studies, Monachium / Boston 2007, ISBN 978-3-8273-7266-6 .
  • Klaus R. Dittrich, Angelika M. Kotz, Jutta A. Mülle: Mechanizm zdarzenia / wyzwalacza do wymuszania zoonych ogranicze spójnoci w projektowych bazach danych. W: ACM SIGMOD. 15/3/1986, ACM Press, Nowy Jork, s. 22-36, ISSN  0163-5808 , doi: 10.1145 / 15833.15836

linki internetowe

Wikisownik: Wyzwalacze baz danych  - wyjanienia znacze, pochodzenie sów, synonimy, tumaczenia

Indywidualne dowody

  1. PostgreSQL: Dokumentacja: 10: CREATE TRIGGER. ródo 11 sierpnia 2018 r .

Opiniones de nuestros usuarios

Wioleta Lewandowski

Nie wiem, jak dotarłem do tego artykułu o zmiennej, ale bardzo mi się podobał.

Gerard Konieczna

Wpis _zmienna bardzo mi się przydał.