www.wikidata.de-de.nina.az
Ein Datenbanktrigger in der Informatik meist nur Trigger genannt englisch fur Ausloser ist eine Funktion diverser Datenbankmanagementsysteme insbesondere grosser relationaler Datenbankmanagementsysteme Bei einer bestimmten Art der Anderungen z B INSERT UPDATE DELETE bei SQL von Daten in einer Tabelle wird ein gespeichertes Programm aufgerufen das diese Anderung erlaubt verhindert und oder weitere Tatigkeiten vornimmt Inhaltsverzeichnis 1 Eigenschaften 2 Beispiele fur Trigger 2 1 Trigger PL SQL Syntax 2 2 PL SQL Code Beispiel 3 Literatur 4 Weblinks 5 EinzelnachweiseEigenschaften BearbeitenTrigger werden unter anderem zur Wahrung der Datenkonsistenz Integritatsuberprufungen und zum Einfugen Loschen oder Andern von Referenzdaten eingesetzt Der Trigger wird ausgefuhrt gefeuert wahlweise bevor die Anderung an der referenzierten Tabelle vorgenommen wird oder danach Einige relationale Datenbankmanagementsysteme RDBMS bieten auch einen Instead of Insert Trigger an englisch fur statt Einfugen der es erlaubt anstelle der INSERT Operation andere SQL Anweisungen auszufuhren Man muss festlegen ob der Trigger pro verandertem Datensatz oder pro Anweisungsaufruf ausgelost werden soll Beispiel Wenn eine Aktualisierungsanweisung UPDATE 100 Satze verandert dann wird im ersten Fall der Trigger 100 Mal aktiviert und im zweiten Fall nur einmal Da Trigger selber Datensatze einfugen andern und loschen konnen kann ein Trigger durch seine Ausfuhrung weitere Trigger auslosen So kann eine ganze Kette von Verarbeitungen angestossen werden Zur Erstellung von Triggern stellen die verschiedenen RDBMS eingebaute prozedurale Programmiersprachen wie PL pgSQL von PostgreSQL PL SQL von Oracle oder SQL PL von IBM DB2 zur Verfugung Bei einigen RDBMS konnen innerhalb der Trigger Verarbeitung auch Stored Procedures aufgerufen werden Dadurch ist der Aufruf eines in einer anderen Programmiersprache C COBOL Java geschriebenen Programms moglich Bei den hier genannten RDBMS sind Trigger sowohl auf Tabellen als auch auf Sichten moglich Neben SQL Standard Triggern die vor bzw nach dem feuernden Ereignis ausgefuhrt werden gibt es bei Oracle IBM DB 2 Microsoft SQL Server und PostgreSQL 1 nicht beim SQL Standard noch die INSTEAD OF Trigger die anstelle des feuernden Ereignisses ausgefuhrt werden INSTEAD OF Trigger konnen auch auf einer View definiert werden Siehe auch Ereignis Programmierung Beispiele fur Trigger BearbeitenTrigger PL SQL Syntax Bearbeiten CREATE OR REPLACE TRIGGER lt trigger name gt BEFORE AFTER INSTEAD OF INSERT DELETE UPDATE OF lt feld name gt ON lt table name gt REFERENCING NEW AS lt new row name gt OLD AS lt old row name gt FOR EACH ROW WHEN lt trigger condition gt lt trigger body gt PL SQL Code Beispiel Bearbeiten CREATE TRIGGER mitarbeiter trig gehalt biu BEFORE INSERT OR UPDATE OF gehalt ON mitarbeiter FOR EACH ROW Triggername mitarbeiter trig gehalt biu biu steht fur B efore I nsert U pdate Tabelle MITARBEITER Trigger soll nur auslosen 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 lt 5000 or new gehalt lt 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 lt variable gt 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 auslosen gt Fehler wird in der Regel bis zur Anwendung hochgereicht Exception Nr 20000 29999 konnen selbst definiert werden IF NEW GEHALT lt 5000 THEN RAISE APPLICATION ERROR 20901 Managergehalt fur Mitarbeiter v mitarbeiter name zu klein END IF IF NEW GEHALT lt OLD GEHALT THEN RAISE APPLICATION ERROR 20902 Gehaltskurzung fur Mitarbeiter v mitarbeiter name nicht erlaubt END IF END Literatur BearbeitenH Faeskorn Woyke B Bertelsmeier P Riemer E Bauer Datenbanksysteme Theorie und Praxis mit SQL2003 Oracle und MySQL Pearson Studium Munchen Boston 2007 ISBN 978 3 8273 7266 6 Klaus R Dittrich Angelika M Kotz Jutta A Mulle An event trigger mechanism to enforce complex consistency constraints in design databases In ACM SIGMOD 15 3 1986 ACM Press New York S 22 36 ISSN 0163 5808 doi 10 1145 15833 15836Weblinks Bearbeiten nbsp Wiktionary Datenbanktrigger Bedeutungserklarungen Wortherkunft Synonyme Ubersetzungen ECMA Regeln INSTEAD OF TRIGGER Trigger deutsch Einzelnachweise Bearbeiten PostgreSQL Documentation 10 CREATE TRIGGER Abgerufen am 11 August 2018 englisch Abgerufen von https de wikipedia org w index php title Datenbanktrigger amp oldid 234794994