Ik heb een andere benadering om beide vragen te beantwoorden. Over het algemeen vermijd ik het gebruik van triggers totdat dit de laatste keuze is, omdat het onnodige overhead aan de database toevoegt.
Vergelijking tussen triggers en opgeslagen procedure
- Het is gemakkelijk om tabelrelaties, beperkingen, indexen en opgeslagen procedures in de database te bekijken, maar triggers zijn moeilijk te bekijken.
- Triggers worden onzichtbaar uitgevoerd voor de toepassing van de clienttoepassing. Ze zijn niet zichtbaar of kunnen worden getraceerd in foutopsporingscode.
- Het is gemakkelijk om triggers te vergeten en als er geen documentatie is, zal het voor nieuwe ontwikkelaars moeilijk zijn om erachter te komen of ze bestaan.
- Triggers worden elke keer uitgevoerd wanneer de databasevelden worden bijgewerkt en het is overhead op het systeem. Het maakt het systeem langzamer.
Genoeg gezegd, daarom geef ik de voorkeur aan opgeslagen processen. U kunt via een agent een taakbestand maken (bijvoorbeeld:het wordt na elke 30 minuten of op een ander tijdstip uitgevoerd). U kunt de logica gebruiken voor het invoegen in dat taakbestand. Op deze manier uw gegevens in de tree table
zou bijna realtime zijn.
nu verwijzing naar het maken van een agent:
http://msdn.microsoft.com/en-us/library/ms191128(v=sql.90).aspx
http://msdn. microsoft.com/en-us/library/ms181153(v=sql.105).aspx