Eu tenho uma abordagem diferente para responder a ambas as perguntas. Geralmente evito usar gatilhos até que seja a última opção, pois adiciona sobrecarga desnecessária no banco de dados.
Comparação entre gatilhos e procedimento armazenado
- É fácil visualizar relacionamentos de tabelas, restrições, índices, storedprocedure no banco de dados, mas os gatilhos são difíceis de visualizar.
- Os gatilhos são executados invisíveis para o aplicativo do cliente. Eles não são visíveis ou podem ser rastreados no código de depuração.
- É fácil esquecer os gatilhos e, se não houver documentação, será difícil descobrir para os novos desenvolvedores sua existência.
- Triggers são executados toda vez que os campos do banco de dados são atualizados e causam sobrecarga no sistema. Isso torna o sistema mais lento.
Chega de dizer, é por isso que prefiro procs armazenados. Você pode criar um arquivo de trabalho (digamos, por exemplo:ele é executado a cada 30 minutos ou em qualquer outro momento) via agente. Você pode usar a lógica para inserção nesse arquivo de trabalho. Desta forma, seus dados na
tree table
seria próximo ao tempo real. agora faça referência para criar um 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