Automatycznie tworzony trigger do nowej tabeli MSSQL według wzorca

0

Witam

1)Mam napisany trigger , który działa na pojedyńczej tabeli. Chcę dodać go automatycznie do nowych tabel.
Jednak nowe tabele tworzą się automatycznie wedlug schematu tb_RRRRMM.
Jak ustawić Globalnie trigger , który będzie się dodawał do nowo utworzonej każdej tabeli, której nazwa zgodna jest ze wzorecem tb_RRRRMM np..tb_201901 , tb_201902.

2) Czy w trigerze zamiast nazwy tabeli mogę wpisać automatycznie tabelę w której jest ten trigger dodany?

Baza danych MSSQL Server.

Z góry dziękuję za pomoc

0

Dzięki. Widziałem ten link wcześniej ale nie za bardzo wiem gdzie tam mojego trigera wstawić.

1

kod triggera musi być w zmiennej @sql, cały myk polega na tym, że nie można zrobić czegoś takiego:

create trigger ' +quotename(@schemaName) + N'.' + quotename(@triggerName) + N' 
    on ' + quotename(@tableName) + N'
    after INSERT
   ...

Nawet jeżeli po podstawieniu zmiennych będzie to poprawne to sql tego nie przyjmie, na tej samej zasadzie jak nie da się podstawić zmiennej za nazwę tabeli w zapytaniu:

select * from @zmiennaznazwatabeli

Dlatego budujesz kod tworzący triggera w zmiennej i później używasz sp_executesql aby puścić to na bazie.

0

Dzięki rozumiem. A w jaki sposób tworzyć trigger nie dla wszystkich nowych tabel w bazie danych tylko dla tabel z nazwą wedlug schematu tb_RRRRMM np. dla nowych tabel tb_201901 , tb_201902 . Tabele moga być dla każdego miesiąca lub mogą występować dziury. Dlatego ważny jest schemat. Żeby trigger utworzył się dla każdej nowej tabeli o wzorcu tb_RRRRMM

Tak.samo nie wiem jak ten wewnętrzny trigger w zapytaniu @sql ma sie odwoływać do tabeli ze wzorca tb_RRRRMM lub po prostu do tabeli w której zostanie utworzony.

0

Jak robisz triggera na bazie, który z automatu ma dodawać triggera do nowo utworzonych tabel, to nie oczekuj gotowca! Zdobądź się na wysiłek i postaraj się zdobyc trochę wiedzy w przedmiotowej sprawie.

Ja tylko napisze, że w przykładzie ze SO zmienna @tableName przechowuje nazwę nowo tworzonej tabeli, więc tovie zostaje dodanie if który sprawdzi nazwę tabeli i modyfikacja zmiennej sql aby miała prawidłowy kod tworzący triggera.

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