Ich habe einen anderen Ansatz, um beide Fragen zu beantworten. Ich vermeide im Allgemeinen die Verwendung von Triggern, bis dies die letzte Wahl ist, da dies der Datenbank unnötigen Overhead hinzufügt.
Vergleich zwischen Triggern und gespeicherten Prozeduren
- Es ist einfach, Tabellenbeziehungen, Einschränkungen, Indizes und gespeicherte Prozeduren in der Datenbank anzuzeigen, aber Trigger sind schwer anzuzeigen.
- Trigger werden für die Clientanwendung unsichtbar ausgeführt. Sie sind nicht sichtbar oder können im Debugging-Code nachverfolgt werden.
- Trigger werden leicht vergessen, und wenn es keine Dokumentation gibt, wird es für neue Entwickler schwierig sein, ihre Existenz herauszufinden.
- Trigger werden jedes Mal ausgeführt, wenn die Datenbankfelder aktualisiert werden, und verursachen Systemaufwand. Dadurch läuft das System langsamer.
Genug gesagt, deshalb bevorzuge ich Stored Procs. Sie können eine Auftragsdatei (z. B. alle 30 Minuten oder zu einem anderen Zeitpunkt) über den Agenten erstellen. Sie können die Logik zum Einfügen in diese Auftragsdatei verwenden. Auf diese Weise Ihre Daten in der tree table
wäre nahezu in Echtzeit.
Jetzt Referenz zum Erstellen eines Agenten:
http://msdn.microsoft.com/en-us/library/ms191128(v=sql.90).aspx
http://msdn. microsoft.com/en-us/library/ms181153(v=sql.105).aspx