Freigeben über


Grundlegendes zu DML-Triggern

In Microsoft SQL Server stehen zwei Hauptmechanismen zum Erzwingen von Geschäftsregeln und Datenintegrität zur Verfügung: Einschränkungen und Trigger. Ein Trigger ist eine besondere Form einer gespeicherten Prozedur, die automatisch wirksam wird, sobald ein Sprachereignis ausgeführt wird. SQL Server enthält drei allgemeine Arten von Triggern: DML-Trigger, DDL-Trigger und Logon-Trigger.

DDL-Trigger werden aufgerufen, wenn ein DDL-Ereignis (Data Definition Language) auf dem Server oder in der Datenbank auftritt.Eine ausführlichere Beschreibung finden Sie unter DDL-Trigger. Logon-Trigger lösen gespeicherte Prozeduren als Antwort auf ein LOGON-Ereignis aus. Dieses Ereignis wird ausgelöst, wenn eine Benutzersitzung mit einer Instanz von SQL Server erstellt wird. Weitere Informationen finden Sie unter Logon-Trigger.

DML-Trigger werden aufgerufen, wenn ein DML-Ereignis (Data Manipulation Language) in der Datenbank auftritt. DML-Ereignisse schließen INSERT-, UPDATE- oder DELETE-Anweisungen ein, die Daten in einer angegebenen Tabelle oder Sicht ändern. Ein DML-Trigger kann andere Tabellen abfragen und komplexe Transact-SQL-Anweisungen enthalten. Der Trigger und die auslösende Anweisung werden wie eine einzige Transaktion behandelt, für die aus dem Trigger heraus ein Rollback ausgeführt werden kann. Tritt ein schwerer Fehler auf (z. B. bei unzureichendem Speicherplatz), wird für die gesamte Transaktion automatisch ein Rollback ausgeführt.

DML-Trigger sind aus folgenden Gründen nützlich:

  • Sie können Änderungen über verknüpfte Tabellen in der Datenbank kaskadierend weitergeben. Diese Änderungen können jedoch mithilfe von kaskadierenden Einschränkungen der referenziellen Integrität effizienter ausgeführt werden.

  • Sie können vor böswilligen oder falschen INSERT-, UPDATE- und DELETE-Operationen schützen und andere Einschränkungen erzwingen, die komplexer als die mit CHECK-Einschränkungen definierten sind.

    Im Gegensatz zu CHECK-Einschränkungen können DML-Trigger auf Spalten in anderen Tabellen verweisen. So kann ein Trigger beispielsweise eine SELECT-Anweisung aus einer anderen Tabelle verwenden, um die eingefügten oder aktualisierten Daten zu vergleichen und weitere Aktionen auszuführen, wie z. B. Ändern der Daten oder Anzeigen einer benutzerdefinierten Fehlermeldung.

  • Sie können den Status einer Tabelle vor und nach einer Datenänderung auswerten und, basierend auf den festgestellten Unterschieden, bestimmte Aktionen ausführen.

  • Mehrere DML-Trigger desselben Typs (INSERT, UPDATE oder DELETE) für eine Tabelle ermöglichen es, dass als Reaktion auf dieselbe Änderungsanweisung unterschiedliche Aktionen durchgeführt werden.