Ho un approccio diverso per rispondere a entrambe le domande. In genere evito di utilizzare i trigger fino a quando non è l'ultima scelta in quanto aggiunge un sovraccarico non necessario sul database.
Confronto tra trigger e stored procedure
- È facile visualizzare le relazioni tra tabelle, i vincoli, gli indici, la procedura memorizzata nel database, ma i trigger sono difficili da visualizzare.
- I trigger vengono eseguiti in modo invisibile all'applicazione dell'applicazione client. Non sono visibili o possono essere tracciati nel codice di debug.
- È facile dimenticare i trigger e se non c'è documentazione sarà difficile da capire per i nuovi sviluppatori per la loro esistenza.
- I trigger vengono eseguiti ogni volta che i campi del database vengono aggiornati e il suo sovraccarico sul sistema. Rende il sistema più lento.
Detto questo, ecco perché preferisco i processi archiviati. È possibile creare un file di lavoro (ad esempio, ad esempio:viene eseguito ogni 30 minuti o in qualsiasi altro momento) tramite l'agente. È possibile utilizzare la logica per l'inserimento in quel file di lavoro. In questo modo i tuoi dati nella tree table
sarebbe quasi in tempo reale.
ora riferimento per creare un agente :
http://msdn.microsoft.com/en-us/library/ms191128(v=sql.90).aspx
http://msdn. microsoft.com/en-us/library/ms181153(v=sql.105).aspx