Grundlegendes zu DDL-Triggern
Aktualisiert: 14. April 2006
Wie normale Trigger lösen auch DDL-Trigger gespeicherte Prozeduren als Antwort auf Ereignisse aus. Im Unterschied zu DML-Triggern werden sie jedoch nicht als Antwort auf UPDATE-, INSERT- oder DELETE-Anweisungen in Tabellen oder Sichten ausgelöst. Stattdessen werden sie als Antwort auf verschiedene DDL-Ereignisse (Data Definition Language, Datendefinitionssprache) ausgelöst. Diese Ereignisse entsprechen in erster Linie Transact-SQL-Anweisungen, die mit den Schlüsselwörtern CREATE, ALTER und DROP beginnen. Bestimmte gespeicherte Systemprozeduren, die DDL-ähnliche Vorgänge ausführen, können ebenfalls DDL-Trigger auslösen.
Wichtig: |
---|
Testen Sie Ihre DDL-Trigger, um ihre Reaktion auf ausgeführte gespeicherte Systemprozeduren zu bestimmen. Die CREATE TYPE-Anweisung und die gespeicherte Prozedur sp_addtype lösen z. B. beide einen DDL-Trigger aus, der für ein CREATE_TYPE-Ereignis erstellt wird. Die gespeicherte Prozedur sp_rename löst jedoch keine DDL-Trigger aus. |
DDL-Trigger können für Verwaltungsaufgaben verwendet werden, z. B. zum Überwachen und Steuern von Datenbankvorgängen.
Sie können DDL-Trigger für die folgenden Aufgaben verwenden:
- Sie möchten bestimmte Änderungen am Datenbankschema verhindern.
- Sie möchten, dass als Antwort auf eine Änderung im Datenbankschema ein Ereignis auftritt.
- Sie möchten Änderungen oder Ereignisse am bzw. im Datenbankschema aufzeichnen.
DDL-Trigger werden nur ausgelöst, nachdem die DDL-Anweisungen ausgeführt werden, die diese Trigger auslösen. DDL-Trigger können nicht als INSTEAD OF-Trigger verwendet werden.
Das folgende Beispiel zeigt, wie mithilfe eines DDL-Triggers verhindert werden kann, dass Tabellen in einer Datenbank geändert oder gelöscht werden.
CREATE TRIGGER safety
ON DATABASE
FOR DROP_TABLE, ALTER_TABLE
AS
PRINT 'You must disable Trigger "safety" to drop or alter tables!'
ROLLBACK ;
DDL-Trigger können als Antwort auf ein Transact-SQL-Ereignis ausgelöst werden, das in der aktuellen Datenbank oder auf dem aktuellen Server verarbeitet wird. Der Bereich des Triggers hängt von dem Ereignis ab. Weitere Informationen zum Bereich eines DDL-Triggers finden Sie unter Entwerfen von DDL-Triggern.
Zum Abrufen eines Beispiels für DDL-Trigger aus der AdventureWorks-Beispieldatenbank öffnen Sie im Objekt-Explorer von SQL Server Management Studio den Ordner Database Triggers, der sich im Ordner Programmability der AdventureWorks-Datenbank befindet. Klicken Sie mit der rechten Maustaste auf ddlDatabaseTriggerLog, und wählen Sie Skript für Datenbanktrigger als aus. Standardmäßig ist der DDL-Trigger ddlDatabaseTriggerLog deaktiviert.
Siehe auch
Konzepte
Grundlegendes zu DDL-Triggern und DML-Triggern im Vergleich
Implementieren von DDL-Triggern
Hilfe und Informationen
Informationsquellen für SQL Server 2005
Änderungsverlauf
Version | Verlauf |
---|---|
14. April 2006 |
|