Имам различен подход, за да отговоря на двата въпроса. Обикновено избягвам да използвам тригери, докато това не стане последният избор, тъй като добавя ненужни допълнителни разходи към базата данни.
Сравнение между тригери и съхранена процедура
- Лесно е да видите връзките на таблиците, ограниченията, индексите, съхранената процедура в базата данни, но тригерите са трудни за преглед.
- Тригерите се изпълняват невидими за клиентското приложение. Те не се виждат или могат да бъдат проследени в кода за отстраняване на грешки.
- Лесно е да забравите за тригерите и ако няма документация, ще бъде трудно да разберете за съществуването на нови разработчици.
- Тригерите се изпълняват всеки път, когато полетата на базата данни се актуализират и са свързани със системата. Прави работата на системата по-бавна.
Достатъчно казано, ето защо предпочитам съхранени процедури. Можете да създадете файл за работа (например:той се изпълнява на всеки 30 минути или по всяко друго време) чрез агент. Можете да използвате логиката за вмъкване в този файл със задача. По този начин вашите данни в tree table
ще бъде близо до реалното време.
сега препратка за създаване на агент:
http://msdn.microsoft.com/en-us/library/ms191128(v=sql.90).aspx
http://msdn. microsoft.com/en-us/library/ms181153(v=sql.105).aspx