MSSQL - dynamiczne dodawanie triggerów

0

Witam,

Mam przed sobą takie zadanie. Mam bazę danych, w której co jakiś czas dodawane są nowe tabele (za pomcoą CREATE TABLE). Gdy w bazie pojawi się nowa tabela, musi do niej zostać dodany automatycznie trigger (takie same triggery do każdej tabeli).

Wymyśliłem coś takiego:

  • tworzę ddl trigger na bazie - będzie on wykrywać tworzenie nowych tabel
  • w triggerze ddl daję CREATE TRIGGER... dla dla tabeli która się pojawi

Założyłem sobie, że trigger będzie mieć nazwę w stylu NazwaNowejTabeli_tr_costam. Jednak problem w tym, że nie udało mi się podstawić zmiennej jako nazwy triggera i nazwy tabeli, bo coś takiego nie działa (syntax error) - w zmiennych @triggerName i @tableName mam odpowiednio nazwę nowego triggera i tabeli:

 
CREATE TRIGGER @triggerName ON @tableName
AFTER INSERT
AS
....
GO

Jak mogę wstawić wartości zmiennych do takiego zapytania?

0

Ale przez sp_executesql to odpalasz czy jak?

0

Docelowo to będzie w procedurze, która ma tworzyć trigger. Jako parametr procedura będzie przyjmować nazwę tabeli - będzie to tabela wykryta przez triggera ddl na bazie danych i będzie ona wywoływana wewnątrz tego triggera na bazie. W ten sposób, każda tabela (która spełnia odpowiednie wymagania rzecz jasna) w bazie utworzona za pomocą CREATE TABLE przez oprogramowanie używające bazy będzie automatycznie "dostawać" swojego triggera.

Znalazłem jednak już rozwiązanie problemu - wystarczy utworzyć dynamiczne zapytanie SQL(jako VARCHAR) i je wykonać za pomocą EXECUTE. Do zmiennej VARCHAR zawierającej zapytanie można już dokleić odpowiednie zmienne. Do zapytania bezpośrednio tak jak próbowałem już niestety nie można.

0

No mi mniej więcej o to chodziło, dokładniej: http://msdn.microsoft.com/en-us/library/ms188001.aspx Kiedyś coś robiłem przy użyciu tej procedury.

0

No to na jedno wyszło, równie dobrze można napisać EXECUTE(@Query)

1 użytkowników online, w tym zalogowanych: 0, gości: 1