Freigeben über


Trigger im Vergleich zu Einschränkungen

Einschränkungen und DML-Trigger besitzen jeweils besondere Vorzüge, die ihr Verwenden unter bestimmten Umständen sinnvoll macht. Der wesentliche Vorteil von DML-Triggern besteht darin, dass sie komplexe Verarbeitungslogik enthalten können, die Transact-SQL-Code verwendet. DML-Trigger sind somit in der Lage, die gesamte Funktionalität zu unterstützen, die von Einschränkungen bereitgestellt wird; trotzdem stellen sie nicht immer die beste Methode für ein bestimmtes Feature dar.

Die Entitätsintegrität sollte immer auf der untersten Ebene durch Indizes erzwungen werden, die Teil von PRIMARY KEY- und UNIQUE-Einschränkungen sind oder unabhängig von Einschränkungen erstellt wurden. Die Domänenintegrität sollte durch CHECK-Einschränkungen und die referenzielle Integrität (RI) durch FOREIGN KEY-Einschränkungen erzwungen werden, vorausgesetzt, ihre Features erfüllen die Funktionalitätsanforderungen der Anwendung.

DML-Trigger sind dann am sinnvollsten, wenn die von Einschränkungen unterstützten Features nicht die Funktionalitätsanforderungen der Anwendung erfüllen. Beispiel:

  • FOREIGN KEY-Einschränkungen können einen Spaltenwert nur anhand eines exakt übereinstimmenden Wertes in einer anderen Spalte überprüfen, außer die REFERENCES-Klausel definiert eine überlappende referenzielle Aktion.
  • Einschränkungen können Fehlerinformationen nur mithilfe von standardisierten Systemfehlermeldungen weitergeben. Wenn die Anwendung benutzerdefinierte Meldungen erfordert und eine komplexere Fehlerbehandlung benötigt oder diese von Vorteil wären, müssen Sie einen Trigger verwenden.

DML-Trigger 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.

  • DML-Trigger können Änderungen nicht zulassen oder einen Rollback für Änderungen ausführen, die die referenzielle Integrität verletzen, und auf diese Weise den Versuch der Datenänderung abbrechen. Ein entsprechender Trigger kann wirksam werden, wenn Sie einen Fremdschlüssel ändern und der neue Wert nicht mit dem Primärschlüssel übereinstimmt. Zu diesem Zweck werden jedoch normalerweise FOREIGN KEY-Einschränkungen verwendet.
  • Wenn für die Triggertabelle Einschränkungen vorhanden sind, werden sie nach der Ausführung des INSTEAD OF-Triggers, jedoch vor der Ausführung des AFTER-Triggers überprüft. Falls eine Verletzung der Einschränkungen vorliegt, wird für die Aktionen des INSTEAD OF-Triggers ein Rollback ausgeführt. Der AFTER-Trigger wird nicht ausgeführt.

Siehe auch

Konzepte

Grundlegendes zu DML-Triggern
DML-Triggertypen
DML-Trigger in der AdventureWorks-Beispieldatenbank
Kaskadierende Einschränkungen der referenziellen Integrität
CHECK-Einschränkungen
Datenintegrität

Andere Ressourcen

Gespeicherte Prozeduren (Datenbankmodul)
Erzwingen der Datenintegrität

Hilfe und Informationen

Informationsquellen für SQL Server 2005