Tengo un enfoque diferente para responder a ambas preguntas. Por lo general, evito usar disparadores hasta que sea la última opción, ya que agrega una sobrecarga innecesaria en la base de datos.
Comparación entre activadores y procedimiento almacenado
- Es fácil ver relaciones de tablas, restricciones, índices, procedimientos almacenados en la base de datos, pero los disparadores son difíciles de ver.
- Los activadores se ejecutan de forma invisible para la aplicación cliente. No son visibles o se pueden rastrear en el código de depuración.
- Es fácil olvidarse de los factores desencadenantes y, si no hay documentación, será difícil darse cuenta de su existencia para los nuevos desarrolladores.
- Los activadores se ejecutan cada vez que se actualizan los campos de la base de datos y se produce una sobrecarga en el sistema. Hace que el sistema funcione más lento.
Dicho lo suficiente, es por eso que prefiero los procesos almacenados. Puede crear un archivo de trabajo (digamos, por ejemplo:se ejecuta cada 30 minutos o en cualquier otro momento) a través del agente. Puede usar la lógica para la inserción en ese archivo de trabajo. De esta manera sus datos en la tree table
estaría cerca del tiempo real.
ahora referencia para crear 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